工厂模式
用于创建复杂对象。
- 定义实体类的接口和实体类
- 定义一个工厂类
- 将对象实例化封装到工厂方法中,根据参数返回不同的实体对象。
- 工厂类可以是普通类(通过new实例化)、也可以是单例类或者提供静态方法
核心:返回抽象产品类型
抽象工厂模式
用于创建工厂的超级工厂
- 定义一个抽象工厂类和抽象方法
- 定义不同种类的工厂类,继承抽象工厂,并实现抽象方法,创建不同种类的对象,如ColorFactory、ShapeFactory
- 定义工厂生成器类,提供方法用于创建不同的工厂,实际上是选择不同的实体类接口
- 定义不同实体类的接口和实体类。如Circle、Rectangle实现Shape接口,Red、Green实现Color接口
- 通过不同的工厂生成不同的接口对象
一个工厂生产多种类型的产品
例如GTK和QT等UI套件相当于工厂,都可以生成按钮、文本、输入框等控件,一个工厂生产一个产品族的产品
核心是面向接口编程,工厂类和实体类都使用接口来声明,根据参数创建具体的对象,外部不需要知道具体的类的名称
http://c.biancheng.net/view/1324.html
https://yearn.xyz/posts/techs/%E5%B8%B8%E8%A7%81%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/
https://www.liaoxuefeng.com/wiki/1252599548343744/1264742167474528