上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 14 下一页

2012年5月25日

设计模式笔记(17)---中介者模式(行为型)

摘要: Gof定义用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式的相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。动机在软件构建过程中,经常会出现多个对象互相关联交互的情况,对象之间常常会维持一种复杂的引用关系,如果遇到一些需求的更改,这种直接的引用关系将面临不断的变化。在这种情况下,我们可使用一个“中介对象”来管理对象间的关联关系,避免相互交互的对象之间的紧耦合引用关系,从而更好地抵御变化。中介者模式的结构图:代码实现:/// <summary>/// 抽象的中介者/// </summary>public abstract class Media 阅读全文

posted @ 2012-05-25 14:51 zhuhai 阅读(181) 评论(0) 推荐(0)

设计模式笔记(16)---解释器模式(行为型)

摘要: Gof定义给定一个语言,定义它的文法的一种表示,并定义一种解释器,这个解释器使用该表示来解释语言中的句 子。动机在软件构建过程中,如果某一特定领域的问题比较复杂,类似的模式不断重复出现,如果使用普通的编程方式来实现将面临非常频繁的变化。在这种情况下,将特定领域的问题表达为某种语法规则下的句子,然后构建一个解释器来解释这样的句子,从而达到解决问题的目的。下面看下解释器模式的结构图基本代码:/// <summary>/// 上下文信息/// </summary>public class Context{ public string Data { get; set; }}// 阅读全文

posted @ 2012-05-25 14:50 zhuhai 阅读(149) 评论(0) 推荐(0)

设计模式笔记(15)---命令模式(行为型)

摘要: Gof定义将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。动机在软件构建过程中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”。但在某些场合——比如需 要对行为进行“记录、撤销/重做(undo/redo)、事务”等处理,这种无法抵御变化的紧耦合是不合适的。在这种情况下,如何将“行为请求者”与“行为实现者”解耦?将一组行为抽象为对象,可以实现二者之间的松耦合。先来看个反例(版本1),假设在一个应用程序中需要用到要用到很多的一些外部的类,并且要对这些类中的操作进行撤销、记录等操作,如果像下面这样实现就会很乱并且不容易实现:pu 阅读全文

posted @ 2012-05-25 14:48 zhuhai 阅读(170) 评论(0) 推荐(0)

设计模式笔记(14)---模板方法模式(行为型)

摘要: Gof定义定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。Template Method使得子类可以不改变一个 算法的结构即可重定义该算法的某些特定步骤。动机在软件构建过程中,对于某一项任务,它常常有稳定的整体操作结构,但各个子步骤却有很多改变的需求,或者由于固有的原因(比如框架与应用之间的关系)而无法和任务的整体结构同时实现。如何在确定稳定操作结构的前提下,来灵活应对各个子步骤的变化或者晚期实现需求?模板方法模式结构图:AbstractClass类:这个抽象类中定义了一个模板方法TemplateMethod,该方法通常为一个具体方法,将抽象类中的一些抽象的操作组合在其中,推迟到子类实现 阅读全文

posted @ 2012-05-25 14:47 zhuhai 阅读(125) 评论(0) 推荐(0)

设计模式笔记(13)---代理模式(结构型)

摘要: Gof定义为其他对象提供一种代理以控制对这个对象的访问。动机在面向对象系统中,有些对象由于某种原因(比如对象创建的开销很大,或者某些操作需要安全控制,或者需要进程外的访问等),直接访问会给使用者、或者系统结构带来很多麻烦。如何在不失去透明操作对象的同时来管理/控制这些对象特有的复杂性?增加一层间接层是软件开发中常见的解决方式。看下结构图:Subject:该类中定义了一些RealSubject和Proxy中共有的方法。RealSubject:这个类是Proxy所要代理的实体类,客户端只和Proxy交互。代码实现:/// <summary>/// 公共接口/// </summar 阅读全文

posted @ 2012-05-25 14:45 zhuhai 阅读(132) 评论(0) 推荐(0)

设计模式笔记(12)---享元模式(结构型)

摘要: Gof定义运用共享技术有效地支持大量细粒度的对象。动机采用纯粹对象方案的问题在于大量细粒度的对象会很快充斥在系统中,从而带来很高的运行时代价——主要指内存需求方面的代价。如何在避免大量细粒度对象问题的同时,让外部客户程序仍然能够透明地使用面向对象的方式来进行操作?这需要用到享元模式,不过应用享元模式是需要进行评估的,也就是说在当前情况下是否会对系统造成性能上的影响,如果会那么就是用,下面先来看个小例子是如何进行评估的。假设有一个字符的类Charator,如下:public class Charator{ char c; Font f;}为了方便评估,Charator类中的Font... 阅读全文

posted @ 2012-05-25 14:44 zhuhai 阅读(189) 评论(0) 推荐(0)

My97日历控件常用功能记录

摘要: My97相信大家都不陌生,应该是我所见过的最强大的一个日历控件了,最近的项目中也比较多地用到了此控件,而且项目中经常会有不同时间范围的需求,在此列出一些比较常用的日期范围格式的设置,尽管在My97的官方文档中有很详细的介绍,正是因为很详细所以查找起来不是很方便。1 可以选择任何日期<input id="txtDate" class="Wdate" type="text" onfocus="WdatePicker()" />2 今天以前的日期<input type="text" 阅读全文

posted @ 2012-05-25 14:43 zhuhai 阅读(205) 评论(0) 推荐(0)

设计模式笔记(11)---外观模式(结构型)

摘要: Gof定义为子系统中的一组接口提供一个一致的界面,Façade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。先来看个小例子,假设我们需要开发一个坦克模拟系统用于模拟坦克车在各种作战环境中的行为,其中坦克系统由引擎、控制器、车轮、车身等各子系统构成。就会有下面这些类的产生public class Wheel{ }public class Engine{ }public class Controller{ }public class BodyWork{ }不同的场景中的要求都不一样,可能会用到某些子系统,也可能不会用到,这些不同的场景就相当是外部接口,这些场景和子系统的关系 阅读全文

posted @ 2012-05-25 14:43 zhuhai 阅读(150) 评论(0) 推荐(0)

设计模式笔记(10)---装饰模式(结构型)

摘要: Gof定义动态地给一个对象增加一些额外的职责。就增加功能而言,Decorator模式比生成子类更为灵活。首先来看一个小例子,假如我们需要给游戏开发一种坦克,除了各种不同型号的坦克外,还希望在不同的场合来给坦克增加以下的一种或多种功能:比如红外线夜视功能、水陆两栖功能、GPS定位功能等。通常做法如下:/// <summary>/// 抽象坦克/// </summary>public abstract class Tank{ public abstract void Shot(); public abstract void Run();}//型号public class T 阅读全文

posted @ 2012-05-25 14:42 zhuhai 阅读(166) 评论(0) 推荐(0)

设计模式笔记(9)---组合模式(结构型)

摘要: Gof定义将对象组合成树形结构以表示“部分--整体”的层次结构。Composite使得用户对单个对象和组合对象使用具有一致性。在面向对象系统中,我们经常会遇到一类具有”容器“特征的对象---即他们在充当对象的同时,又是其他对象的容器。比如在一些管理系统中就会出现总公司下面有很多的分公司,分公司下面有很多的部门,每个部门下又有很多的员工,像分公司和部门就是既充当了“对象”的角色也充当了“容器”的角色;还有我们可能玩过的“俄罗斯套娃”也是这种结构,一个大娃娃里面装个小娃娃,小的里面又有个小的直到最小的一个,中间的娃娃就是既充当了“对象”也充当了“容器”。先看下面这个例子:interface IBo 阅读全文

posted @ 2012-05-25 14:41 zhuhai 阅读(183) 评论(0) 推荐(0)

上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 14 下一页

导航

我的百度空间