【简单工厂模式】
简单工厂模式也叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。
1、优点。
通过使用工厂类,外界可以从直接创建具体产品对象的尴尬局面摆脱出来,仅仅需要负责“消费”对象就可以了。而不必管这些对象究竟如何创建及如何组织的.明确了各自的职责和权利。
2、缺点。
由于工厂类集中了所有实例的创建逻辑,违反了高内聚责任分配原则,将全部创建逻辑集中到了一个工厂类中;它所能创建的类只能是事先考虑到的,如果需要添加新的类,则就需要改变工厂类了。
3、点评
在实际应用中,没有人会使用这种经典的简单工厂模式。通常会将 Type 成为 Product 的一个属性,工厂根据 Type,生成对应的 Product,从而避免工厂耦合Product。
【工厂方法模式】
将一个工厂,拆分成了多个工厂。每个工厂分别负责不同的产品。
工厂方法模式保持了简单工厂模式的优点,而且克服了它的缺点。但工厂方法模式的缺点是每增加一个产品类,就需要增加一个对应的工厂类,增加了额外的开发量。
1、点评
本模式将Simple Factory中的 Type 拆分了成各个SubFactory,每个 SubFactory管理一个Type。这样做解保持了开闭原则。但是使用方Client需要根据不同的Type,选择不同的Factory。
【抽象工厂模式】
定义:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类。
1,首先从简单工厂进化到工厂方法,是因为工厂方法弥补了简单工厂对修改开放的弊端,即简单工厂违背了开闭原则。
2,从工厂方法进化到抽象工厂,是因为抽象工厂弥补了工厂方法只能创造一个系列的产品的弊端。