第 9 章 行为设计模式

在最后两章中,我们学习了帮助我们创建对象和构建复杂对象结构的模式。 现在是时候转向软件设计的另一个方面了,它涉及组件的行为。 在本章中,我们将学习如何组合对象以及如何定义它们的通信方式,以便最终结构的行为变得可扩展、模块化、可重用和适应性强。 诸如“如何在运行时更改算法的某些部分?”、“如何根据对象的状态更改对象的行为?”以及“如何在不知道其实现的情况下迭代集合?”等问题。 是本章介绍的模式解决的典型问题类型。

您已经遇到过此类模式中的一个著名成员,那就是观察者模式,我们在第 3 章“回调和事件”中介绍了它。 观察者模式是 Node.js 平台的基本模式之一,因为它为我们提供了一个简单的接口来处理事件和订阅,而事件和订阅是 Node 事件驱动架构的生命力。

如果您已经熟悉四人帮(GoF)设计模式,那么在本章中,您将再次见证其中一些模式的实现在 JavaScript 中与更纯粹的面向对象方法相比是如何截然不同的。 本文的一个很好的例子可以在迭代器模式中找到,您将在本章后面遇到它。 事实上,为了实现迭代器模式,我们不需要扩展任何类或构建任何复杂的层次结构。 相反,我们只需要向类添加一个特殊的方法。 此外,本章中的一个特殊模式(中间件)与另一种流行的 GoF 模式(即责任链模式)非常相似,但它在 Node.js 中的实现已经成为一种标准,可以被视为一种自己的模式。

现在,是时候卷起袖子,亲自尝试一些行为设计模式了。 在本章中,您将了解以下内容:

  • 策略模式,帮助我们更改组件的某些部分以使其适应特定需求

  • 状态模式,允许我们根据组件的状态更改组件的行为

  • 模板模式,允许我们重用组件的结构来定义新组件

  • 迭代器模式,为我们提供了一个通用接口来迭代集合

  • 中间件模式,允许我们定义模块化处理链 步骤

  • 命令模式,具体化执行例程所需的信息,允许轻松传输、存储和处理这些信息