摘要: 享元模式(Flyweight Pattern)是池技术的重要实现方式,可以降低大量重复的、细粒度的类在内存中的开销。 定义: 使用共享对象可有效地支持大量的细粒度对象。 以共享的方式高效地支持大量的细粒度对象。享元对象能做到共享的关键是区分内部状态(Internal State)和外部状态(Exte 阅读全文
posted @ 2018-12-06 11:07 yewen1234 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 模板方法模式(Template Method Pattern)是一种简单的、常见的且应用非常广泛的模式。 定义: 定义一个操作中算法的框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 模板方法模式的类图如下所示。 模板方法模式涉及两个角色: 抽象模板( 阅读全文
posted @ 2018-12-05 15:22 yewen1234 阅读(197) 评论(0) 推荐(0) 编辑
摘要: 命令模式(Command Pattern)又称为行动(Action)模式或交易(Transaction)模式。 定义: 将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或记录请求日志,可以提供命令的撤销和恢复功能。 命令模式类图如下所示。 命令模式中有如下4个角色。 命令( 阅读全文
posted @ 2018-12-05 14:16 yewen1234 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 状态模式(State Pattern)又称为状态对象模式,该模式允许一个对象在其内部状态改变时改变其行为。 定义: 当一个对象内部状态改变时允许改变行为,这个对象看起来像改变了其类型。 状态模式的核心是封装,状态的变更引起行为的变动,从外部看来就好像该对象对应的类发生改变一样。 状态模式的类图如下所 阅读全文
posted @ 2018-12-04 11:30 yewen1234 阅读(275) 评论(0) 推荐(0) 编辑
摘要: 访问者模式(Visitor Pattern)的目的是封装一些于某种数据结构元素之上的操作,一旦这些元素需要修改,接受这个操作的数据结构则可以保持不变。 定义: 封装一些作用于某种数据结构中的各元素的操作,它可以在不改变数据结构的前提下定义于作用这些元素的新的操作。 访问者模式的类图如下。 访问者模式 阅读全文
posted @ 2018-12-03 17:03 yewen1234 阅读(245) 评论(0) 推荐(0) 编辑
摘要: 备忘录模式(Memento Pattern)又称为快照(Snapshot)模式或Token模式。 意思是:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个对象。这样,以后就可以将该对象恢复到原先保存的状态。 通俗地说,备忘录模式就是将一个对象进行备份,提供一种程序数据的备份方法 阅读全文
posted @ 2018-12-03 14:52 yewen1234 阅读(271) 评论(0) 推荐(0) 编辑
摘要: 观察者模式(Observer Pattern)也称发布订阅模式,它是一种在项目中经常使用的模式。 定义: 定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新。 观察者模式的类图如下所示。 观察者模式具体有以下4个角色。 抽象主题(Subject)角 阅读全文
posted @ 2018-11-30 22:26 yewen1234 阅读(232) 评论(0) 推荐(0) 编辑
摘要: 中介模式(Mediator)也称调停者模式,是一种比较简单的模式。 定义: 用一个中介对象封装一系列对象(同事)的交互,中介者使各对象不需要显示地相互作用,从而使其耦合松散,而且独立地改变它们之间的交互。 抽象中介者类图如下: 中介者模式有以下4个角色: 抽象中介者(Mediator)角色:定义统一 阅读全文
posted @ 2018-11-30 10:25 yewen1234 阅读(250) 评论(0) 推荐(0) 编辑
摘要: 迭代器模式(Iterator Pattern)是最常被使用的几个模式之一,被广泛地应用到Java的API中。 定义:提供一种方法访问一个容器对象中各个元素,而又不需暴露该对象的内部细节。 类图如下所示。 迭代器模式有以下4个角色。 抽象迭代器(Iterator)角色:负责定义访问和遍历元素的接口。 阅读全文
posted @ 2018-11-28 16:03 yewen1234 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 策略模式(Strategy Pattern)也叫政策模式,是一种比较常见的模式。 策略模式涉及以下3个角色。 环境(Context)角色:也叫上下文角色,起到承上启下的作用,屏蔽高层模块对策略、算法的直接访问,它持有Strategy类的引用。 抽象策略(Strategy)角色:对策略、算法进行抽象, 阅读全文
posted @ 2018-11-28 10:24 yewen1234 阅读(166) 评论(0) 推荐(0) 编辑