摘要:一、定义 多个对象都有机会处理某个请求,将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。 二、UML类图 Handler:抽象处理者角色,是一个处理请求的接口或抽象类; ConcreteHandler:具体的处理者角色,具体的处理者接收到请求后可以选择将请求处理掉,或者将请求传递
阅读全文
摘要:一、定义 多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。 二、示例 下面用委托、事件, 实现观察者模式 1.Publisher.cs // 定义发布者 public class Publisher { // 声明事件 public event
阅读全文
摘要:一、定义 允许一个对象在其内部状态改变时改变它的行为,从而使对象看起来似乎修改了它的类。 二、UML类图 Context:上下文环境,定义客户程序需要的接口,并维护一个具体状态角色的实例,将与状态相关的操作委托给当前的 ConcreteState对象来处理; State:抽象状态,定义特定状态对应行
阅读全文
摘要:一、定义 定义一系列算法,把他们一个个封装起来,并且使他们可以互相替换。该模式使得算法可以独立于使用它的客户程序而变化。 二、UML类图 Context:策略上下文,持有IStrategy的引用,负责和具体的策略实现交互; IStrategy:策略接口,约束一系列具体的策略算法; ConcreteS
阅读全文
摘要:一、定义 定义一个操作中的算法的框架,而将一些步骤延迟到了子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些步骤。 二、实例 来一个经典的脑筋急转弯。 把一个大象装进冰箱要几个步骤? 然后把一个长颈鹿装进冰箱要几个步骤? 三、UML类图 四、钩子函数 钩子就是给子类一个授权,让子类来可重
阅读全文
摘要:一、定义 运用共享技术有效地支持大量细粒度的对象。 二、适用场景 系统会用到大量相同或相似的对象。 对象创建比较耗时。 三、目的 减少创建对象的数量。 对象全局共享。 四、UML类图 FlyweightFactory:享元工厂,用来创建并管理Flyweight对象 Flyweight:享元类的基类或
阅读全文
摘要:一、定义 将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得对单个对象和组合对象的使用具有一致性。 二、应用实例 文件系统中的文件与文件夹、Winform中的简单控件与容器控件、XML中的Node和Element等。 透明模式 透明模式是把组合使用的方法放到抽象类中,使得叶子对象和枝干
阅读全文
摘要:一、定义 桥接模式是将抽象部分与它的实现部分分离,使它们都可以独立地变化。 UML类图 Abstraction:抽象化角色,并保存一个对实现化对象的引用。RefinedAbstraction:修正抽象化角色,改变和修正父类对抽象化的定义。Implementor:实现化角色,这个角色给出实现化角色的接
阅读全文
摘要:一、定义 装饰器模式动态地给一个对象增加一些额外的职责。就增加功能而言,装饰器模式比生成子类更为灵活。 二、UML类图 三、示例 需求:假设开一个奶茶店,奶茶种类繁多,如红豆奶茶,布丁奶茶,珍珠奶茶,红豆珍珠奶茶等,并根据不同配料计算价格,并且根据每个客户的要求,每种奶茶又可以加糖或者加冰,加糖加冰
阅读全文
摘要:一、定义 为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 外观模式跟代理模式类似,也更偏向于架构模式,常见于企业应用集成中,企业应用集成包括界面集成,业务流程集成(过程集成),控制集成(应用集成,API集成),数据集成四个层面,都与外观模式有
阅读全文
摘要:一、概念界定 委托、代理、中介 二、委托(Delegate) 委托是一种引用方法的类型,相当于C++里的函数指针。 三、代理(Proxy) 见他如见我就叫代理,产品代理商,代购,租房代理 四、中介(Mediator) 中间搭桥就是中介,最终双方还是要见面,租房中介 五、定义 为其他对象提供一种代理以
阅读全文
摘要:一、定义将一个类的接口转换成客户希望的另外一个接口。适配器模式将原本由于接口不兼容而不能一起工作的那些类可以一起工作。 二、示例实现一个读卡器的例子。 三、案例分析 1.通常我们电脑只有USB接口,不能直接插入SD卡; 2.电脑和SD卡都是成型的产品,不可能改造。 3.因此,我们需要在中间实现一个转
阅读全文
摘要:原型模式 一、定义 原型模式是一种创建对象实例的设计模式,它通过复制一个现有对象来创建新的对象实例,而无需重新构建所有内容。 二、例子 1.Person.cs //实现 ICloneable 接口 public class Person : ICloneable { public string Na
阅读全文
摘要:一、定义 建造者模式是将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。创建者模式隐藏了复杂对象的创建过程,它把复杂对象的创建过程加以抽象,通过子类继承或者重载的方式,动态的创建复杂的、具有复合属性的对象。 二、例子 构造一个手机,手机包括CPU,内存,屏幕等几个部分,而C
阅读全文
摘要:定义 单例模式,属于创建类型的一种常用的设计模式。它的目的就是为了创建的类在当前进程中只有一个实例。 目的 全局唯一 全局共享 优点 确保全局共享同一个实例 节约系统资源 代码 1.Program.cs internal class Program { static void Main(string
阅读全文
摘要:定义 抽象工厂是工厂方法的升级版,为相关或者相互依赖的对象提供一个统一的接口,而且无需指定他们的具体实现类。 UML类图 优缺点 优点 对产品族进行约束,封装性好 缺点 产品族扩展困难,添加一个产品需要修改抽象和具体工厂类,违背开闭原则。 代码: 1.Program.cs public class
阅读全文
摘要:工厂方法 案例改进 定义 定义一个工厂父类,工厂父类负责定义创建对象的公共接口,而子类则负责生成具体的对象。即将类的实例化延迟到工厂类的子类中完成,即由子类来决定应该实例化哪一个类。 UML类图 优缺点 优点: 符合设计原则 缺点:类的个数成倍增加,增加了系统的复杂度 代码 1.Program.cs
阅读全文
摘要:工厂模式 工厂顾名思义就是创建产品,本质就是用工厂方法代替new操作创建一种实例化对象的方式。根据不同的实现方式和抽象级别又可分为简单工厂,工厂方法和抽象工厂三种模式。 案例 需求 封装一个SqlHelper类,实现对SqlServer的操作,且后续可能需要同时支持SqlServer,MySql,O
阅读全文