10.3.1 创建型模式
创建型模式包含以下模式:
·抽象工厂模式
·构造器模式
·工厂方法模式
·原型模式
·单例模式
之前已经说过,本章节主要讲述什么是设计模式,而不是详细描述GoF书中的每个模式。因此,每个类别中的模式我们只会讲解一个。在创建型模式中我们选择工厂模式的一个例子进行讲述。
工厂方法模式
创建或实例化对象很可能是面向对象编程中最基本的概念之一。你无法使用一个对象,除非它已经被创建。编写代码时,最显而易见的实例化对象的方法是使用new关键字。
为了说明问题,让我们重新阅读本书中使用的Shape类示例。在这里,我们有熟悉的父类Shape(抽象类)和子类Circle(具体类)。我们通过使用new关键字以常规方式实例化Circle类:
尽管上述代码确实有效,但是你的代码中可能还有许多其他地方需要实例化一个Circle类或任何其他Shape类。在许多情况下,每次创建Shape对象时,你都需要处理特定的对象创建参数。
因此,任何时候更改对象的创建方式时,你都必须在实例化Shape对象的每个位置都更改相应的代码。这样的代码高度耦合:因为一个位置的代码更改,会带来潜在的许多其他位置的代码更改。这种方法的另一个问题是,它将对象创建逻辑公开给使用类的程序员。
为了解决这些情况,我们可以实现工厂方法。简而言之,工厂方法负责封装所有类的实例化工作,以便统一整个实现。你使用工厂来实例化类,并且工厂负责正确地实例化类。
工厂方法模式
工厂方法模式的基本意图是创建对象而不必指定确切的类,实际上是使用接口创建新类型的对象。 ...
Get 面向对象的思考过程(原书第5版) now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.