Factory Method 工厂方法——对象创建型模式

1.动机
在软件系统中,经常面临着创建对象的工作,由于 需求的变化,需要创建的对象的具体类型经常变化。
2.定义
定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂模式使得一个类的实例化延迟 到子类 (目的:解耦;手段:虚函数)。
3.用自己的一句话概述
比如电脑厂商生产电脑,生产类无需关心生产的是笔记本电脑还是台式,又调用者决定。
4.优点
- 用户只需要知道具体工厂的名称就可得到所要的产品,无须知道产品的具体创建过程;
- 在系统增加新的产品时只需要添加具体产品类和对应的具体工厂类,无须对原工厂进行任何修改,满足开闭原则;
5.缺点
- 每增加一个产品就要增加一个具体产品类和一个对应的具体工厂类,这增加了系统的复杂度。
6.使用场景
- 客户只知道创建产品的工厂名,而不知道具体的产品名。如 TCL 电视工厂、海信电视工厂等。
- 创建对象的任务由多个具体子工厂中的某一个完成,而抽象工厂只提供创建产品的接口。
- 客户不关心创建产品的细节,只关心产品的品牌。
7.总结
- 工厂方法模式用于隔离类对象的使用者和具体类型之间的耦合关系。面对一个经常变化的具体类型,紧耦合关系(new)会导致软件的脆弱。
- 工厂方法模式通过面向对象的手法,将所要创建的具体对象工作延迟到子类从而实现一种扩展(而非更改)的策略,较好地解决了这种紧耦合关系。
- 工厂方法模式解决“单个对象”的需求变化。缺点在于要求创建方法/参数相同。
0 条评论