简单工厂模式
简单工厂模式就是用一个工厂类负责生产所有的产品。其结构和职责如下:
- 工厂角色:简单工厂模式的核心,负责生产所有的产品。工厂类可以被外界直接调用,创建所需的产品对象。
- 抽象产品角色:工厂所创建对象的父类,描述产品的接口。
- 具体产品角色:工厂所创建的对象。
优缺点
优点:
- 实现了对象创建和使用的分离。
缺点:
- 工厂类职责过重,所有的产品均通过工厂类生产。
- 违反开闭原则,添加新产品需要修改工厂逻辑,工厂越来越复杂。
工厂方法模式
在工厂方法种,将工厂抽象为一个抽象工厂,具体的工厂是抽象工厂的一个实现类。其角色和职责如下:
- 抽象工厂角色:工厂方法模式的核心,任何工厂类都必须实现这个接口。
- 工厂角色:是抽象工厂的一个实现,负责实例化产品对象。
- 抽象产品角色:工厂所创建对象的父类,描述产品的接口。
- 具体产品角色:工厂角色所创建的对象。
优缺点
优点:
- 实现了对象创建和使用的分离。
- 对于新产品的创建,符合开闭原则。
缺点:
- 每一种工厂负责一个产品的实现,增加了类的个数,抽象性和理解难度增加。