1.1.1 描述
l 正规描述
核心工厂类不再负责所有产品的创建,而是将具体创建的工作交给子类去做,成为一个抽象工厂角色,仅负责给出具体工厂类必须实现的接口,而不接触哪一个产品类应当被实例化这种细节。
l 形象描述
请MM去麦当劳吃汉堡,不同的MM有不同的口味,要每个都记住是一件烦人的事情,我一般采用Factory Method模式,带着MM到服务员那儿,说“要一个汉堡”,具体要什么样的汉堡呢,让MM直接跟服务员说就行了。
1.1.2 类图&示意代码
public abstract class Product(){ public abstract void productMethod(); }
public class ConcreteProduct1 extends Product(){ public void productMethod(){ System.out.println(“This is concreteProduct1”); } }
public class ConcreteProduct2 extends Product(){ public void productMethod(){ System.out.println(“This is concreteProduct2”); } }
public abstract class Factory(){ public abstract Product create(); }
public class ConcreteFactory1 extends Factory(){ public Product create(){ return new ConcreteProduct1(); } }
public class ConcreteFactory2 extends Factory(){ public Product create(){ return new ConcreteProduct2(); } }
public class Client(){ public void main(String args[]){ Factory f1 = new ConcreteFactory1(); Product p1 = f1.create(); p1.productMethod(); Factory f2 = new ConcreteFactory2(); Product p2 = f2.create(); p2.productMethod(); } } |
注:
1、 工厂类分为抽象工厂类和实体工厂类
2、 产品类分为抽象产品类和实体产品类
3、 不同的实体工厂类创建不同的实体产品