摘要:
模式介绍 状态模式旨在允许对象在其内部状态改变时改变其自身行为。 示例 我们以烤牛排为例,生熟程度分为: Uncooked (not safe to eat) Rare Medium Rare (mid rare) Medium Medium Well (mid well) Well done 简单 阅读全文
摘要:
模式介绍 观察者模式试图允许对象在其内部状态改变时通知观察者。 这意味着单个对象需要知道观察它的对象,并且当状态发生变化的时候,需要能够与那些观察者通信。此外,观察者应该被自动通知。 示例 设想我们需要一个系统来建模本地蔬菜市场中蔬菜价格的波动。 我们需要允许餐馆查看价格,并在特定蔬菜的价格低于指定 阅读全文
摘要:
模式介绍 备忘录模式就是在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。 示例 想象一下,一家真正高端的餐厅可能直接从当地农场订购,并且餐厅需要跟踪哪些配料来自哪些供应商。 在我们的系统中,我们需要跟踪关于特定供应商输入的信息量,并 阅读全文
摘要:
模式介绍 中介器设计模式定义了一个对象,该对象封装了一组对象之间如何相互作用。 示例 我们想象一下电影院的快餐柜,电影院有多个区域都有这样的快餐柜,我们来设计一个它们之间交流的系统。 中介者接口: 抽象的柜台: 具体的柜台: 具体的中介者: 客户端调用: 总结 中介者使中介人“站在”通信对象之间,控 阅读全文
摘要:
模式介绍 迭代器模式提供了一种访问底层表示中的对象的方法,而不会暴露对表示本身的访问。 示例 我们以果冻豆为例进行建模 聚合接口和具体的聚合实现: 迭代器接口和具体的迭代器实现: 客户端调用: 总结 迭代器模式提供了一种方式,我们可以在不暴露集合本身的情况下访问和操作集合中的对象。如果你使用了LIN 阅读全文
摘要:
模式介绍 命令模式将请求封装为对象,从而允许开发人员根据接收到该命令的类来不同地对待该请求。此外,它能够实现更复杂的体系结构,甚至可以实现诸如撤销/重做之类的操作。 责任链模式非常适合命令模式,因为前者可以使用后者的对象来表示其请求。 示例 我们将建模一个系统,在该系统中,我们可以在快餐店创建订单, 阅读全文
摘要:
模式介绍 责任链设计模式试图通过给不止一个对象处理特定请求的机会,来避免将请求耦合到特定接收器。 本质上,我们沿着该对象的潜在处理程序的“链”传递对象,直到其中一个处理程序处理请求。 示例 我们还是以餐馆建模。 想一下,当厨房需要采购新设备,厨师长需要像Boss请示。 我们的店里的采购流程是这样的: 阅读全文
摘要:
模式介绍 代理模式提供代理或占位符对象来控制对另一个不同对象的访问。代理对象可以以与包含对象的方式相同的方式使用。 示例 我们再次以高端餐馆的服务员来建模,服务员需要做三件事情: 1. 取单 2. 下单 3. 结账 抽象的服务员接口: 服务员类: 现在想象一下,我们的服务员实例是一个有经验的服务员, 阅读全文
摘要:
模式介绍 享元模式用于创建许多小的、相关的对象,而无需为此调用大量开销工作,从而提高性能和可维护性。 享元模式允许对象的许多实例共享它们的内在状态,从而减少与创建它们相关的成本。 示例 我们以Slider(一种类似汉堡的食物)为例。 抽象的享元类 具体的享元类 工厂类,实例具体的享元类 客户端调用 阅读全文
摘要:
模式介绍 外观模式的思想是隐藏系统的复杂性。 示例 假设餐馆的厨房分为三部分,分别放置冷热食物和饮料的区域。但是你作为顾客的话,并不关心这些。然而服务员知道这些。 顾客 声明厨房区域的接口、订单类 厨房的三个区域 服务员 客户端调用 可以看出,顾客之和服务员进行了交互。 总结 外观模式是复杂系统上的 阅读全文