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

1.动机

在软件系统中,经常面临着创建对象的工作,由于 需求的变化,需要创建的对象的具体类型经常变化。

2.定义

定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂模式使得一个类的实例化延迟 到子类 (目的:解耦;手段:虚函数)。

3.用自己的一句话概述

比如电脑厂商生产电脑,生产类无需关心生产的是笔记本电脑还是台式,又调用者决定。

4.优点

  • 用户只需要知道具体工厂的名称就可得到所要的产品,无须知道产品的具体创建过程;
  • 在系统增加新的产品时只需要添加具体产品类和对应的具体工厂类,无须对原工厂进行任何修改,满足开闭原则;

5.缺点

  • 每增加一个产品就要增加一个具体产品类和一个对应的具体工厂类,这增加了系统的复杂度。

6.使用场景

  • 客户只知道创建产品的工厂名,而不知道具体的产品名。如 TCL 电视工厂、海信电视工厂等。
  • 创建对象的任务由多个具体子工厂中的某一个完成,而抽象工厂只提供创建产品的接口。
  • 客户不关心创建产品的细节,只关心产品的品牌。

7.总结

  • 工厂方法模式用于隔离类对象的使用者和具体类型之间的耦合关系。面对一个经常变化的具体类型,紧耦合关系(new)会导致软件的脆弱。
  • 工厂方法模式通过面向对象的手法,将所要创建的具体对象工作延迟到子类从而实现一种扩展(而非更改)的策略,较好地解决了这种紧耦合关系。
  • 工厂方法模式解决“单个对象”的需求变化。缺点在于要求创建方法/参数相同。

0 条评论

发表回复

Avatar placeholder

您的电子邮箱地址不会被公开。 必填项已用 * 标注