3.2 工厂方法模式

工厂方法模式是什么?

      工厂方法模式是针对每一种产品提供一个工厂类,通过不同的工厂实例来创建不同的产品实例。在同一等级结构中,支持增加任意产品。

 

UML类图如下:

 

 注意:Factory不一定要用接口,也可以采用抽象类,反正能符合里氏替换原则就可以了,不要太注重形式。要注意的是怎么解决问题。

类图代码:

Product
public interface Product {
    public void operation1();
    public void operation2();
}
ConcreateProductA
public class ConcreateProductA implements Product {
    public void operation1() {
        System.out.println("ConcreateProductA -> operation1");
    }

    public void operation2() {
        System.out.println("ConcreateProductA -> operation2");
    }
}
ConcreateProductB
public class ConcreateProductB implements Product {
    public void operation1() {
        System.out.println("ConcreateProductB -> operation1");
    }

    public void operation2() {
        System.out.println("ConcreateProductB -> operation2");
    }
}
Factory
public interface Factory {
    public Product create();
}
ConcreateFactoryA
public class ConcreateFactoryA implements Factory{
    public Product create(){
        return new ConcreateProductA();
    }
}
ConcreateFactoryB
public class ConcreateFactoryB implements Factory{
    public Product create(){
        return new ConcreateProductB();
    }
}
Client
public class Client {
    public static void main(String[] args) {
        Factory factoryA = new ConcreateFactoryA();
        Product productA = factoryA.create();
        productA.operation1();
        productA.operation2();
        
        Factory factoryB = new ConcreateFactoryB();
        Product productB = factoryB.create();
        productB.operation1();
        productB.operation2();
    }
}
执行结果

 

工厂方法模式应用在哪些场景?

      我们在前面讲述的简单工厂模式,一旦新增一种新的产品,则需要修改已有的代码,有没有办法不修改已有代码,而通过扩展来实现新产品的创建(使其符合开闭原则)。工厂方法模式就是为了解决这个问题的。如果新增一种新产品时,通过创建一个新的产品工厂来生产改新产品。不需要修改已有的产品工厂。

posted on 2012-05-19 00:13  随心浪子  阅读(183)  评论(0编辑  收藏  举报

导航