抽象工厂模式:Abstract Factory
链接:抽象工厂模式实例代码 + 解析
目的
-
在软件系统中,经常面临着“一系列相互依赖的对象工作”;同时,由于需求的变化,往往存在更多系列对象的创建工作。
-
如何应对这种变化?如何绕过常规的对象创建方法(new),提供一种“封装机制”来避免客户程序和这种“多系列具体对象创建工作”的紧耦合。
P.s.
抽象工厂本质是对工厂模式的延续,在工厂模式中我们是把同一批基于同一个的基/父类的创建都使用单独的工厂创建,但是又是虽然来自不同基类的类也有相关性,此时我们将其耦合在一起使用一个工厂创建反而会提高效率也没有其它的坏处,比如:对同一个链接的操作的类,虽然不同的行为的父类是不同的,但是他们都是针对同一个链接,此时我们就可以使用一个类将所有行为都放在一起并使用一个工厂创建。
注:由于使用同一个工厂创建,该工厂会将所有的成员都创建包括不用的也会。(也可以使用装饰模式去叠加工厂,做到自定义工厂)
模式定义
提供一个接口,让该接口负责创建一系列”相关或者相互依赖的对象“,无需指定它们具体的类。 ——《设计模式》GoF
要点总结
- 如果没有应对”多系列对象创建“的需求变化,则没有必要使用Abstract Factory模式,这时候使用简单的工厂即可。
- ”系列对象“指的是在某一个特定系列的对象之间有相互依赖、或作用的关系。不同系列的对象之间不能相互依赖。
- Abstract Factory模式主要在于应用”新系列“的需求变动。其缺点在与难以应对”新对象“的需求变动。