摘要:
模式简介 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。TemplateMethod使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 日常开发过程中我们经常会遇到一些行为结构大致相同,具体实现不同的场景。例如,开发一款文档读取工具,读取文档大致步骤可以抽象为打开文档 读取内容 阅读全文
摘要:
模式简介 定义一系列的算法,把它们一个个封装起来,并且使它们可互相替换。本模式使得算法可独立于使用它的客户而变化。 策略模式也被称为政策模式,它是一种行为型模式。为了完成某一项任务,往往可以有很多种不同的方式,例如商场促销,有不同的促销手段,比如提价50满100减20、原价两倍打八折等等,这每一种方 阅读全文
摘要:
模式简介 允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。 在某些情况下,一个对象的行为取决于它当前所处的状态,当对象属性(状态)在系统运行过程中发生变化,它呈现出的行为也随之发生改变。例如可调节亮度的台灯,假设灯光亮度分为三级,每次按下按钮,台灯会根据当前亮度增加一级,若已 阅读全文
摘要:
模式简介 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖它的对象都得到通知并更新。 观察者模式又叫发布 订阅模式,主要描述了一种目标与观察者之间的相互关系。目标对象一旦发生变化,它所有的观察者都得到通知并作出相应的更新操作。下图恰好描述了这种场景,目标对象拿出烟,观察者纷纷掏 阅读全文
摘要:
模式简介 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 很多时候我们要记录一个对象的内部状态,为了允许用户撤销不确定的操作或从错误中恢复过来。同时,为了不违反封装的原则,而不能暴露其内部状态和实现。想象一下日常生活中我们经常会 阅读全文
摘要:
模式简介 用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 通常情况下,应用程序由许多类组成,随着类数量不断增加,系统变得难以维护,主要体现在类之间的交互变得更加复杂,难以理解,修改其中一个类可能会影响到其他的类,导致整个 阅读全文
摘要:
模式简介 提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露该对象的内部表示。 一个聚合对象,应该提供一个方法让用户访问它的元素,并且不暴露其内部结构。遍历的方式可能多种多样,我们不希望在这个聚合类中定义各种遍历的方法。这种情况下,就可以使用迭代器模式 将对列表的访问和遍历从列表对象中分离出来 阅读全文
摘要:
模式简介 给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。 顾名思义,解释器模式就是定义一种语法,并提供一个解释器,客户端可以使用该解释器来解释这个语句来解决问题。例如写文档常用的Markdown语法,可以用 来表示无序列表,用 来表示下划线。通过解释 阅读全文
摘要:
模式简介 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录日志,以及支持可撤销的操作。 在一些系统功能设计的时候,需要向某个对象发送请求,但是并不知道请求的接收者以及被请求的具体操作,而是在程序运行时指定具体的请求接收者。这段话比较抽象,下面通过一个实际生活中的例子 阅读全文
摘要:
模式简介 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一个链,并沿着链传递该请求,直到有一个对象处理它为止。 职责链模式是一种行为型模式,它包括命令对象以及一系列处理对象。每个处理对象决定它能够处理哪些命令对象,将不能处理的命令对象传递至职责链中的下一个处理 阅读全文