1.1.1 描述
l 正规描述
客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:如何创建及如何向客户端提供。
l 形象描述
追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory。
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 class Factory(){ public static Product create(int which){//静态方法 if(which == 1){//通过if-else语句来判断创建哪一个对象,是不是有点麻烦? return new ConcreteProduct1(); } else if(which == 2){ return new ConcreteProduct2(); } } }
public class Client(){ public void main(String args[]){ Product p1 = Factory.create(1); p1.productMethod(); Product p2 = Factory.create(2); p2.productMethod(); } } |
注:
1、 工厂类是一个实体类
2、 产品类分为抽象产品类和实体产品类
3、 工厂类提供类方法向外提供创建不同产品的功能
4、 需要根据某个条件来判断创建什么样的具体实体产品