-
什么是工厂方法模式
通过定义一个抽象的核心工厂类,并定义创建产品对象的借口,创建具体产品实例的工作延迟到其工厂子类中完成。
解决了简单工厂模式存在的一些问题:
职责过重,一但这个工厂不能正常工作,整个系统都不能运行
违反了开闭原则,将全部创建逻辑集中到了一个工厂类中,一旦增加新产品,就需要修改工厂类
简单工厂模式由于使用了静态工厂方法,不能被继承和重写 -
工厂方法模式的结构
抽象产品:描述具体产品的公共接口
具体产品:描述生产的具体产品
抽象工厂:描述具体工厂的公共接口
具体工厂:描述具体工厂,用于创建产品实例 -
简单工厂模式的应用场景
- 客户只知道创建产品的工厂名,而不知道具体的产品名,如TCL电视工厂、海信电视工厂等
创建对象的任务由多个具体子工厂的某一个完成,而抽象工厂只提供创建产品的接口 - 客户不关心创建产品的细节,只关心产品的品牌
-
简单工厂模式的优缺点
优点:
更符合开闭原则:新增一种产品时,只需要增加相应的具体产品和相应的工厂子类
更符合单一职责原则:每个具体工厂只负责创建对应产品
不使用静态工厂方法,可以形成基于继承的等级结构
缺点:
每增加一个产品就需要增加一个具体产品类和一个对应的具体工厂类,
类的个数容易过多,增加了复杂度,增加了系统的抽象性和理解难度 -
简单工厂模式的实现