2012-10-25
名称:访问者模式意图:表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 适用环境: 1、一个对象结构包含很多类对象,它们有不同的接口,而你想对这些对象实施一些依赖于其具体类的操作。 2、需要对一个对象结构中的对象进行很多不同的并且不想的操作,而你想避免让这些操作污染这些对象的类。Visitor使得...
名称:模板方法模式意图:定义一个操作中的算法的骨架,而将一些步聚延迟到子类中。TemplateMethod使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。适用环境: 1、一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现。 2、各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复。这是Opdyke和Johnson所描述过的重分解以一般...
名称:策略模式意图:定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算 法可独立于使用它的客户而变化。适用环境: 1、许多相关的类仅仅是行为有异。策略提供了一种用多个行为中的一个行为来配置一个类 的方法。 2、需要使用一个算法的不同变体。例如,你可能会定义一些反映不同的空间/时间权衡的算法。当这些变体实现为一个算法的类层次时,...
名称:观察者模式意图:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它 的对象的都得到通知并被自动更新。适用环境: 1、当一个抽象模型有两个方面,其中一个方面依赖于另一方面。将这二者封装在独立的对象中以使它们可以各自独立地改变和复用。 2、当对一个对象的改变需要同时改变其它对象,而不知道具体有多少对象有待改变。 ...
名称:备忘录模式意图:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 适用环境: 1、必须保存一个对象的在某一个时记刻的(部分)状态,这样以后需要时它才能恢复到先前的状态。 2、如果一个用接口来让其它对象直接得到这些状态,将会暴露对象的实现细节并存坏对象的封装性。 cla...
名称:中介者模式意图:用一个中介对象封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 适用环境: 1、一组对象以定义良好但是复杂的方式进行通信。产生的相互依赖关系结构混乱且难以理解。 2、一个对象引用其他很多对象并且直接与这些对象通信,导致难惟复用该对象。 3、想定...
2012-10-24
经历过很多次网站改版,对网站改版的计划做个小结,帮助需要的产品经理。 改版文档里有几点是必须写的: 1、改版目的 清晰知道为什么改版,新的网站战略定位,如何在保持原有优势的情况下,突出新产品。 2、现状分析 包括现有整体架构、内容维护体系、社区状况、存在问题分析,清楚现有状况,才能知道改版需要调整什么。 ...
名称:迭代器模式 意图:提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部表示。 适用环境: 1、访问一个取合对象的内容而无需暴露它的内部表示。 2、支持对聚合对象的多种遍历。 3、为遍历不同的聚合结构提供一个统一的接口(即,支持多态迭代)。 abstractclassAggregate { ...
名称:解释器模式意图:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。适用环境: 1、当有一个语言需要解释执行,并且你可将该语言中的句子表示为一个抽象语法对时,可使用解释器模式。而当存在以下情况该模式效果最好: 该文法法简单对于复杂文法,文法的类层变得宠大庞大而无法管理。此时语法分析程序生成器这样的...
名称:命令模式 意图:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排 队或记录请求日志,以及支持可撤消的操作。 适用环境: 1、抽象出待执行的动作以参数化某对象。你可用过程语言中的回调函数表达这种参数化机制。所谓回调函数是指函数先在某处注册,而它将在稍后某个需要的时候被调用。Command模式是回调机制的一个面向对象的替代品。 2、在不同的时刻...