摘要: 一、备忘录模式概述 保存某个对象内部状态的拷贝,使得以后就可以将该对象恢复到原先的状态。 结构: (1)源发器类 Originator 负责创建一个备忘录 Memento,用以记录当前时刻它的内部状态,并可使用备忘录恢复内部状态。 (2)备忘录类 Memento 负责存储 Originator 对象 阅读全文
posted @ 2018-01-22 17:11 C3Stones 阅读(266) 评论(0) 推荐(0) 编辑
摘要: 一、中介者模式概述 如果一个系统中对象之间的联系呈现网状结构,对象之间存在大量多对多的关系,导致关系及其复杂,这时可以引入一个中介者对象,使得各个对象只跟中介者对象打交道,从而将复杂的网络结构化为星型结构。 核心: (1)如果一个系统中对象之间的联系呈现网状结构,对象之间存在大量的多对多关系,将导致 阅读全文
posted @ 2018-01-22 16:45 C3Stones 阅读(355) 评论(0) 推荐(0) 编辑
摘要: 一、迭代器模式概述 提供一种可以遍历聚合对象的方式。又称为:游标(cursor)模式 结构: (1)聚合对象:存储数据 (2)迭代器:遍历数据 二、迭代器模式示例代码 定义:正向遍历迭代器和逆向遍历迭代器 测试: 控制台输出: 三、迭代器模式常见开发应用场景 (1)JDK内置的迭代器(List / 阅读全文
posted @ 2018-01-22 15:30 C3Stones 阅读(249) 评论(0) 推荐(0) 编辑
摘要: 一、解释器模式概述 (1)它是一种不常用的设计模式; (2)由于描述如何构成一个简单的语言解释器,主要用于使用面向对象语言开发的编译器和解释器的设计; (3)当我们需要开发一种新的语言时,可以考虑使用解释器模式; (4)注意:尽量不要使用解释器模式,后期维护会有很大麻烦。在项目中,可以使用 Jrub 阅读全文
posted @ 2018-01-22 15:12 C3Stones 阅读(208) 评论(0) 推荐(0) 编辑
摘要: 一、命令模式概述 将一个请求封装到一个对象,从而使得可用不同的请求对客户进行参数化。 二、命令模式结构 (1)Command 抽象命令类 (2)ConcreteCommand 具体命令类 (3)Invoker 调用者 / 请求者 请求的发送者,他通过命令对象来执行。一个调用者并不需要在设计时确定其接 阅读全文
posted @ 2018-01-22 14:46 C3Stones 阅读(444) 评论(0) 推荐(0) 编辑
摘要: 一、责任链模式概述 将能够处理同一类请求的对象连成一条链,所提交的请求沿着链传递,链上的对象逐个判断是否有能力处理该请求。 如果能则处理,否则传递给链上的下一个对象去处理。 定义责任链 (1)通过链表的方式实现职责链 (2)通过非链表的方式实现职责链 通过集合、数组生成职责链更加实用!实际上,很多项 阅读全文
posted @ 2018-01-22 11:31 C3Stones 阅读(346) 评论(0) 推荐(0) 编辑
摘要: 一、享元模式概述 内存属于稀缺资源,不要随便浪费。如果有很多个完全相同或相似的对象,可以通过享元模式,节省内存。 享元模式核心: (1)享元模式可以共享的、方式高效的支持大量细粒度对象的重用; (2)享元对象能做到共享的关键是区分了内部状态和外部状态: ① 内部状态:可以共享,不会随环境变化而改变 阅读全文
posted @ 2018-01-22 10:52 C3Stones 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 一、外观模式概述 外观模式也称为门面模式。 核心:为了系统提供统一的入口,封装子系统的复杂性,便于客户端调用。 二、外观模式场景导入与示例代码 场景:要想自己去注册一个公司,首先去工商局检测命名是否合法,再去质量监督局办理组织机构代码证,再去税务局办理税务登记,最后去工商银行开户。但是使用外观模式, 阅读全文
posted @ 2018-01-22 10:20 C3Stones 阅读(170) 评论(0) 推荐(0) 编辑
摘要: 一、组合模式概述 将对象组合成树状结构以表示“部分和整体”层次结构,使得客户可以统一的调用叶子对象和容器对象。 (1)组合模式的使用场景 把部分和整体的关系用树形结构来表示,从而使客户端可以使用统一的方式处理部分对象和整体对象。 (2)组合模式核心 抽象构件(Component)角色:定义了叶子和容 阅读全文
posted @ 2018-01-22 09:57 C3Stones 阅读(355) 评论(0) 推荐(0) 编辑