摘要: 模式简介 允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。 在某些情况下,一个对象的行为取决于它当前所处的状态,当对象属性(状态)在系统运行过程中发生变化,它呈现出的行为也随之发生改变。例如可调节亮度的台灯,假设灯光亮度分为三级,每次按下按钮,台灯会根据当前亮度增加一级,若已阅读全文
posted @ 2018-07-16 20:05 Answer.Geng 阅读(295) 评论(0) 编辑
摘要: 模式简介 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖它的对象都得到通知并更新。 观察者模式又叫发布 订阅模式,主要描述了一种目标与观察者之间的相互关系。目标对象一旦发生变化,它所有的观察者都得到通知并作出相应的更新操作。下图恰好描述了这种场景,目标对象拿出烟,观察者纷纷掏阅读全文
posted @ 2018-07-13 16:37 Answer.Geng 阅读(33) 评论(0) 编辑
摘要: 模式简介 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 很多时候我们要记录一个对象的内部状态,为了允许用户撤销不确定的操作或从错误中恢复过来。同时,为了不违反封装的原则,而不能暴露其内部状态和实现。想象一下日常生活中我们经常会阅读全文
posted @ 2018-07-11 14:36 Answer.Geng 阅读(216) 评论(0) 编辑
摘要: 模式简介 用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 通常情况下,应用程序由许多类组成,随着类数量不断增加,系统变得难以维护,主要体现在类之间的交互变得更加复杂,难以理解,修改其中一个类可能会影响到其他的类,导致整个阅读全文
posted @ 2018-07-10 19:38 Answer.Geng 阅读(269) 评论(0) 编辑
摘要: 模式简介 提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露该对象的内部表示。 一个聚合对象,应该提供一个方法让用户访问它的元素,并且不暴露其内部结构。遍历的方式可能多种多样,我们不希望在这个聚合类中定义各种遍历的方法。这种情况下,就可以使用迭代器模式 将对列表的访问和遍历从列表对象中分离出来阅读全文
posted @ 2018-06-28 20:54 Answer.Geng 阅读(252) 评论(2) 编辑
摘要: 模式简介 给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。 顾名思义,解释器模式就是定义一种语法,并提供一个解释器,客户端可以使用该解释器来解释这个语句来解决问题。例如写文档常用的Markdown语法,可以用 来表示无序列表,用 来表示下划线。通过解释阅读全文
posted @ 2018-06-26 20:31 Answer.Geng 阅读(283) 评论(0) 编辑
摘要: 模式简介 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录日志,以及支持可撤销的操作。 在一些系统功能设计的时候,需要向某个对象发送请求,但是并不知道请求的接收者以及被请求的具体操作,而是在程序运行时指定具体的请求接收者。这段话比较抽象,下面通过一个实际生活中的例子阅读全文
posted @ 2018-06-24 18:21 Answer.Geng 阅读(217) 评论(0) 编辑
摘要: 模式简介 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一个链,并沿着链传递该请求,直到有一个对象处理它为止。 职责链模式是一种行为型模式,它包括命令对象以及一系列处理对象。每个处理对象决定它能够处理哪些命令对象,将不能处理的命令对象传递至职责链中的下一个处理阅读全文
posted @ 2018-06-22 16:37 Answer.Geng 阅读(304) 评论(0) 编辑
摘要: 模式简介 为其他对象提供一种代理以控制对这个对象的访问。 在一些情况下,客户端不能或者不想直接引用一个对象,可以借助一个第三方代理来实现间接引用。代理对象在客户端和目标对象之间起到中介作用,通过代理对象,可以去掉客户不能看到的内容或服务,也可以添加客户需要的额外服务。 想象一下,商家想找明星艺人演出阅读全文
posted @ 2018-06-20 21:45 Answer.Geng 阅读(280) 评论(0) 编辑
摘要: 模式简介 运用共享技术有效地支持大量细粒度地对象。 通常情况下,面向对象技术可以增强系统地灵活性及可扩展性,在系统开发过程中,我们会不断地增加类和对象。当对象数量过多时,将会带来系统开销过高、性能下降等问题。享元模式通过共享相同或相似的对象来解决这一类问题。在介绍享元模式之前,首先要弄清楚两个概念:阅读全文
posted @ 2018-06-19 19:39 Answer.Geng 阅读(266) 评论(1) 编辑