工厂模式
分为三种:简单工厂模式,工厂方法模式,抽象工厂模式
他们都属于创建模式,下一篇博客会把23种设计模式进行分类
简单工厂模式
定义:定义了一个创建对象的类,由这个类来封装实例化对象的行为
存在的问题:类的创建依赖于工厂类,想要更改拓展程序时必须修改工厂类,违背了开放-封闭原则。
如何解决:可以定义一个创建对象的抽象方法同时创建多个不同的工厂类实现该抽象方法。其实就是工厂方法模式
工厂方法模式
定义:定义了一个创建对象的抽象方法,由子类决定要实例化的类。
存在的问题:客户端需要创建类的具体实例,增加了用户的操作复杂性。如何解决这一问题:我们可以把工厂类抽象为接口,用户只需要去找默认的工厂提出自己的需求(传入参数),便能得到自己想要产品,而不用根据产品去寻找不同的工厂,方便用户操作。这也就是接下来要说的抽象工厂模式。
抽象工厂模式
定义:定义了一个接口用于创建相关或有依赖关系的对象族,而无需明确指定具体类。
工厂模式适用场合
当有很多产品需要创建而这些产品又具有共同的接口就可以适用
使用选择
简单工厂 : 用来生产同一等级结构中的任意产品。(不支持拓展增加产品)
工厂方法 :用来生产同一等级结构中的固定产品。(支持拓展增加产品)抽象工厂 :用来生产不同产品族的全部产品。(支持拓展增加产品;支持增加产品族)
通俗来讲:工厂方法像工厂中的一个生产线,而抽象工厂是一个工厂。