2009年4月2日星期四

JavaDesign_004:工厂方法模式 Factory Method (摘录+整理)

1. 特点
(1)工厂类变成了抽象工厂(抽象类或接口),不再负责“生产“具体产品,而是把这个工作交给了具体工厂子类去做。
(2)一个具体工厂类对应一个具体产品类
(3)具体产品类继承抽象产品类或实现产品接口。(这一点与简单工厂模式相同)
(4)抽象产品类或产品接口只有一个,具体产品类全部继承抽象产品类或实现产品接口。(这一点与简单工厂模式相同)
(5)每个具体工厂类的工厂方法可以有多个,但返回类型都是同一个抽象产品类或产品接口。

2. 优点
(1)产品使用者无需“生产”产品,只需“消费”产品。
(2)当需要增加产品时,产品使用者代码无需改变。
(3)当需要增加具体产品类时,只需要增加这个具体产品类以及对应的具体工厂子类,其它产品类和工厂类不受影响。
注:(1)(2)是所有工厂模式的共同的优点。

3. 缺点
(1)工厂方法是非静态的,产品使用者必须先创建(拥有)该工厂实例。

4. 典型应用场景
(1)不同的DAO工厂。

参考文献:
1. 《设计模式》 板桥里人
2. 《Java与模式》 阎宏

没有评论: