概念
抽象工厂模式在原有的工厂方法模式上扩展,在工厂方面进行了抽象。从而增加产品规格的需求,可以更高地抽象成增加工厂类型。降低了耦合。
实现
类图
代码
Factory
1 | public interface Factory { |
FactoryA
1 | public class ProductFactoryA implements Factory { |
FactoryB
1 | public class ProductFactoryB implements Factory { |
Product
1 | public interface Product { |
ProductB
1 | public class ProductB implements Product { |
SoftProductB
1 | public class SoftProductB extends ProductB { |
HardProductB
1 | public class HardProductB extends ProductB { |
ProductA
1 | public class ProductA implements Product { |
SoftProductA
1 | public class SoftProductA extends ProductA { |
HardProductA
1 | public class HardProductA extends ProductA { |
Client
1 | public class Client { |
场景
如上产品 族 A B都有两个子类型,或者说特性。Hard or Soft。如果某个时候业务需求添加产品族C。此时扩展就很方便了,只要实现产品C的工厂类,就可以。
不用修改原来的代码,耦合度低。
总结
抽象工厂
优点: 扩展产品族(类型)容易
缺点: 扩展产品族下的子产品难,需要整体结构调整。