工厂模式三兄弟:简单工厂模式,工厂方法模式已经抽象工厂模式
简单工厂模式:
简单工厂模式有一个工厂类,专门成产品,主要实现如下:
package com.djk.design.factory.simplefactory;
public class Client
{
public static void main(String[] args)
{
Product p1 = SimpleFactory.getProduct("car");
productSay(p1);
p1 = SimpleFactory.getProduct("bus");
productSay(p1);
}
public static void productSay(Product product)
{
if (null !=product)
{
product.say();
}
}
}
package com.djk.design.factory.simplefactory;
public final class SimpleFactory
{
public static Product getProduct(String name)
{
if (null == name || "".equals(name))
{
throw new RuntimeException("your product is not exist");
}else if ("car".equalsIgnoreCase(name))
{
return new Car();
}else if ("bus".equalsIgnoreCase(name))
{
return new Bus();
}else
{
throw new RuntimeException("your product is not exist");
}
}
}
package com.djk.design.factory.simplefactory;
public interface Product
{
void say();
}
package com.djk.design.factory.simplefactory;
public class Car implements Product
{
@Override
public void say()
{
System.out.println("i am a car");
}
}
package com.djk.design.factory.simplefactory;
public class Bus implements Product
{
@Override
public void say()
{
System.out.println("i am a bus");
}
}
可以看出简单工厂的主要逻辑是工厂类做的,工厂类根据客户端传来的产品名称返回对应的产品。
简单工厂的优点是:
客户端无须关心产品是怎么被创建出来的,只要告诉工厂类要什么产品即可
缺点是:
后续如果要新增一个产品的具体类就要在工厂类中新增一个条件判断语句 没有满足开闭原则