工厂模式

概念

  1. 工厂模式:
    建立创建对象的工厂,在面向对象编程中,术语“工厂”表示一个负责创建其他类型对象的类。通常情况下,作为一个工厂的类有一个对象以及与它关联的多个方法。客户端使用某些参数调用此方法之后,工厂会据此创建所需类型的对象,然后将它们返回给客户端。
  2. 工厂具有下列优点:
    松耦合,即对象的创建可以独立于类的实现;客户端无需了解创建对象的类,但是照样可以使用它来创建对象。它只需要知道需要传递的接口、方法和参数,就能够创建 所需类型的对象了。这简化了客户端的实现;可以轻松地在工厂中添加其他类来创建其他类型的对象,而这无需更改客户端代码。最简单的情况下,客户端只需要传递一个参数就可以了;工厂还可以重用现有对象。但是,如果客户端直接创建对象的话,总是创建一个新对象。

三种变体

  • 简单工厂模式:
    允许接口创建对象,但不会暴露对象的创建逻辑。
  • 厂方法模式:
    允许接口创建对象,但使用哪个类来创建对象,则是交由子类决定的。
  • 抽象工厂模式:
    抽象工厂是一个能够创建一系列相关的对象而无需指定/公开其具体类的接口。该模式能够提供其他工厂的对象,在其内部创建其他对象。

1 简单工厂模式

工厂可以帮助开发人员创建不同类型的对象,而不是直接将对象实例化。

2 工厂方法模式

  • 以下几点可以帮助我们了解工厂方法模式:
    (1)我们定义了一个接口来创建对象,但是工厂本身并不负责创建对象,而是将这以任务交由子类来完成,即子类决定了要实例化哪些类;
    (2)Factory方法的创建是通过继承而不是通过实例化来完成的;
    (3)工厂方法使设计更加具有可定制性。它可以返回相同的实例或子类,而不是某种类型的对象。
  • 工厂方法模式的优点:
    (1)它具有更大的灵活性,使得代码更加通用,因为它不是单纯地实例化某个类。这样,实现哪些类取决于接口(Product),而不是ConcreteCreator。
    (2)它们是松耦合的,因为创建对象的代码与使用它的代码是分开的。客户端完全不需要关心要传递哪些参数以及需要实例化哪些类。由于添加新类更加容易,所以降低了维护成本。

3 抽象工厂模式

抽象工厂模式的主要目的是提供一个接口来创建一系列相关对象,而无需指定具体的类。工厂方法将创建实例的任务委托给了子类,而抽象工厂方法的目标是创建一系列相关对象。

工厂方法与抽象工厂方法

工厂方法 抽象工厂方法
它向客户端开发了一个创建对象的方法 抽象工厂方法包含一个或多个工厂方法来创建一个系列的相关对象
它使用继承和子类来决定要创建哪个对象 它使用组合将创建对象的任务委托给其他类
工厂方法用于创建一个产品 抽象工厂方法用于创建相关产品的系列
全部评论

相关推荐

10-09 09:39
门头沟学院 C++
HHHHaos:这也太虚了,工资就一半是真的
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务