3.1 简单工厂模式

什么是简单工厂模式?

从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫做静态工厂方法(StaticFactory Method)模式,但不属于23种GOF设计模式之一。

简单工厂模式的工厂类一般是使用静态方法,通过接收的参数的不同来返回不同的对象实例。不修改代码的话,是无法扩展的。

UML类图如下:

 简单工厂模式

代码:

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");
    }
}
SimpleFactory
public class SimpleFactory {
    public static Product create(String type){
        Product product = null;
        if("A".equals(type)){
            product = new ConcreateProductA();
        }
        else if("B".equals(type)){
            product = new ConcreateProductB();
        }
        
        return product;
    }
}
Client
public class Client {
    public static void main(String[] args) {
        Product productA = SimpleFactory.create("A");
        productA.operation1();
        productA.operation2();
        
        Product productB = SimpleFactory.create("B");
        productB.operation1();
        productB.operation2();
    }
}

 

什么场景下使用简单工厂模式?

(1)多种相同类型的产品(为什么不使用类的构造函数直接初始化)

(2)产品的类型比较固定(简单工厂模式不支持扩展,一旦扩展需要修改已有代码)

(3)产品的初始化比较复杂(为什么不使用类的构造函数直接初始化)

 

使用简单工厂模式的例子有:

(1)Spring的bean工厂模式,通过getBean获取产品,所有的产品都继承于Object

 

什么场景不能使用简单工厂模式?

(1)产品类型不固定,变化性比较大

(2)产品只有一种且产品的初始化很简单

 

 

 

 

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

导航