创建型设计模式。在创建对象时,不会暴露给客户端创建逻辑,并且通过一个共同接口来指向新创建的对象。从中也可以了解到工厂模式最起码要做到:1.隐藏创建逻辑 2.抽取创建接口
工厂模式分类
- 简单工厂
- 方法工厂
- 抽象工厂
简单工厂模式
注意: 这种实现方式,违反了开闭原则(当在添加一个产品类,需要修改 getShape()的实现逻辑)。
工厂方法模式
抽象工厂下的每一个工厂类对应一个产品类
抽象工厂类
工厂方法模式:
* 一个抽象产品类,可以派生出多个具体产品类。
* 一个抽象工厂类,可以派生出多个具体工厂类。
* 每个具体工厂类只能创建一个具体产品类的实例。
抽象工厂模式(多个产品的创建工厂):
* 多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。
* 一个抽象工厂类,可以派生出多个具体工厂类。
* 每个具体工厂类可以创建多个具体产品类的实例。
区别:
* 工厂方法模式只有一个抽象产品类,而抽象工厂模式有多个。
* 工厂方法模式的具体工厂类只能创建一个具体产品类的实例,而抽象工厂模式可以创建多个。