摘要:意图:在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 单就实现保存一个对象在某一时刻的状态的功能,还是很简单的——将对象中要保存的属性放到一个专门管理备份列表的的对象中,需要的时候则调从备份的列表中将该对象的属性放回去。但是为了能让你的备份对象访问到原对象中的属性,是否意味着你就要全部公开或者部分公开对象原本私有的属性呢?如果你的做法已经破坏了封装,那么就要考虑重构一下了。 备忘录模式的组成部分: (1)备忘录(Memento)角色:备忘录角色存储“备忘发起角色”的内部状态。“备忘发起角色”根据需要决定备忘录角色存...
阅读全文
摘要:http://channel9.msdn.com/Blogs/clinted
阅读全文
摘要:意图:使多个请求对象都有机会处理请求,从而避免请求对象的发送者和接收者之间的耦合关系。将这些请求对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。职责链模式典型结构图 职责模式中ConcreteHandle将自己的后继对象(向下传递消息的对象)记录在自己的后继表中,当一个请求到来时,ConcreteHandle先会检查自己有没有匹配的处理程序,如果有就自己处理,否则就传递给他的后继。下面的实例程序中只是简化了一下,ConcreteHandle只是简单的检查看自己有没有后继,有的话将请求传递给后继进行处理,没有的话就自己处理。示例代码:class Handler{public:.
阅读全文
摘要:下面这张UML示例图是从《大话设计模式》截出来的:对上面的UML图例之间的关系做一下总结:一、关联(association) 两者之间只是一种“知道”的关系,耦合度非常小。例如上图中的企鹅类与气候类。 图形表示:用一根连接类的实线表示,用箭头表示关联的方向;如果不明确指明方向,则默认关联是双向的。 二、 聚合(aggregation) 聚合体现了类之间的一种整体与部分的关系,表示一种很弱的“拥有”关系。体现了一种层次结构,整体类位于部分类的上层,多个部分类处于并列的层次 。 图形表示:尾端带一个菱形的单箭头直线,菱形指向整体部分 。三、 组合(composition) 组合是一种很强的“拥有.
阅读全文