2009年4月3日星期五

JavaDesign_005:抽象工厂模式 Abstract Factory(摘录+整理)

1. 特点
(1)工厂类变成了抽象工厂(
抽象类或接口),不再负责“生产“具体产品,而是把这个工作交给了具体工厂子类去做(这一点与工厂方法模式相同)
(2)所有的产品之间是有关联的,构成一个产品族,产品族中包含不同的抽象产品类或产品接口(3)一个具体工厂类负责“生产”对应的产品族中的所有产品
(3)具体产品类继承抽象产品类或实现产品接口。(这一点与简单工厂模式相同)
(4)每个具体工厂类的工厂方法有多个,每一个对应不同的抽象产品类或产品接口,及其对应的所有具体产品类。

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

3. 缺点
1)工厂方法是非静态的,产品使用者必须先创建(拥有)该工厂实例。
4. 典型应用场景
1)不同平台的视窗构件(按钮、文本...)。
2)苹果机和PC机的硬件构件(CPU、内存、...)。

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

没有评论: