摘要: 1.特点:将一系列算法逐个封装并可相互替换,易于切换、理解、扩展。 优点:1)提供了管理相关算法族的方法。2)可以避免使用多重条件转移语句。缺点:1)必须知道所有的具体策略类及它们的区别.2)生成许多的策略类。2.概念:3.类图:4.实现代码:/// /// 策略类,定义了所有支持的算法... 阅读全文
posted @ 2015-08-07 12:36 ice_baili 阅读(167) 评论(0) 推荐(0) 编辑
摘要: 1.特点:将对集合的访问与遍历从集合对象中分离出来到迭代器中。2.概念:迭代器模式(Iterator)就是分离了聚合对象的遍历行为,抽象出一个迭代器来负责这样既可以做到不暴露集合的内部结构,又可让外部代码透明的访问集合内部数据。3.类图:4.程序实现// 抽象聚合类 public interf... 阅读全文
posted @ 2015-08-07 12:34 ice_baili 阅读(187) 评论(0) 推荐(0) 编辑
摘要: 1.特点:将请求发送者与具体实现者解耦,可对请求排列、取消、重做,支持事务。(多请求,单处理)2.概念:属于对象的行为模式【GOF95】。命令模式又称为行动(Action)模式或交易(Transaction)模式。命令模式把一个请求或者操作封装到一个对象中。命令模式允许系统使用不同的请求把客户端参数... 阅读全文
posted @ 2015-08-07 12:32 ice_baili 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 1.特点:将处理者排成链,沿链传递请求。(单请求,多处理)2.概念:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理他为止。3.类图:4.程序实现:using System;using System.Collec... 阅读全文
posted @ 2015-08-07 12:31 ice_baili 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 1.特点:当Element较稳定、Visitor易增加时考虑。(朋友在精不在多)2.概念:表示一个作用于某对象结构中的各个元素的操作。它使你可以在不改变各个元素的类的前提下定义作用于这些元素的新操作。3.类图:4.程序实现:public abstract class Emploree { ... 阅读全文
posted @ 2015-08-07 12:29 ice_baili 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 1.特点:由中介封装一系列对象交互,减少对象间耦合,利于复用。(朋友多)2.概念:定义一个中介对象来封装系列对象之间的交互。3.类图:4.程序实现:using System;using System.Collections.Generic;using System.Linq;using System... 阅读全文
posted @ 2015-08-07 12:27 ice_baili 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 1.特点:为运用共享技术,支持大量细粒度对象,节省开销。2.概念:运用共享技术有效地支持大量细粒度的对象。3.类图: public abstract class Character { public int Size { get; set; } public ... 阅读全文
posted @ 2015-08-07 12:10 ice_baili 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 1.特点:不破坏封装,又要取该对象内状态,且要求状态还原时考虑。(保持封装边界)2.概念:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。3.类图:4.程序实现:namespace MementoPattern{ // 联系人 ... 阅读全文
posted @ 2015-08-07 12:06 ice_baili 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 1.特点:继承+重写解决代码重复问题。2.概念:定义一个操作中的算法的骨架,而将步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义算法的某些特定步骤。3.类图:4.程序实现:/// /// 抽象类 /// public abstract class Abstr... 阅读全文
posted @ 2015-08-07 12:00 ice_baili 阅读(252) 评论(0) 推荐(0) 编辑
摘要: 1.特点:动态增加单个对象的额外职责,比生成子类更灵活。2.概念:动态给一个对象添加额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。3.类图:4.程序实现/// /// 定义一个对象接口,可以给这些对象动态地添加职责 /// public abstract class ... 阅读全文
posted @ 2015-08-07 11:58 ice_baili 阅读(170) 评论(0) 推荐(0) 编辑