随笔分类 - 设计模式
设计模式学习
摘要:命令模式又称为行动(Action)模 式或交易(Transaction)模式。命令模式把一个请求或者操作封装到一个对象中。 命令模式是对命令的封装。命令模式把发出命令的责任和执行命令的责任分割开,委派给不同的对象. 每一个命令都是一个操作:请求的一方发出请求要求执行一个操作;接收的一方收到请求,并执
阅读全文
摘要:职责链模式是一种对象的行为模式【GOF95】。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织链和分配责任。
阅读全文
摘要:代理(Proxy)模式给某一个对象提供一个代理,并由代理对象控制对原对象的引用。 代理的种类 如果按照使用目的来划分,代理有以下几种: • 远程(Remote)代理:为一个位于不同的地址空间的对象提供一个局域代表对象。这个不同的地址空间可以是在本机器中,也可是在另一台机器中。远程代理又叫做大使(Am
阅读全文
摘要:Flyweight在拳击比赛中指最轻量级,即"蝇量级",有些作者翻译为"羽量级"。这里使用"享元 模式"更能反映模式的用意。 享元模式以共享的方式高效地支持大量的细粒度对象。享元对象能做到共享的关键是区分内蕴状态(Internal State)和外蕴状态(External State)。内蕴状态是存
阅读全文
摘要:外部与一个子系统的通信必须通过一个统一的门面(Facade)对象进行,这就是门面模式。门面模式要求一个子系统的外部与其内部的通信必须通过一个统一的门面(Facade)对象进行。 门面模式提供一个高层次的接口,使得子系统更易于使用。 门面模式结构图: 结构图说明: 门面(Facade)角色:客户端可以
阅读全文
摘要:装饰(Decorator)模式又名包装(Wrapper)模式[GOF95]。装饰模式以对客户端透明的方 式扩展对象的功能,是继承关系的一个替代方案。 装饰模式类图: 类图说明: 抽象构件(Component)角色:给出一个抽象接口,以 规范准备接收附加责任的对象。 具体构件(Concrete Com
阅读全文
摘要:合成模式:有时又叫做部分-整体模式(Part-Whole)。合成模式将对象组织到树结构中,可以用来描述整体与部分的关系。合成模式可以使客户端将单纯元素与复合元素同等看待。 合成模式分为安全式和透明式 安全式合成模式类图: 抽象构件(Component)角色:这是一个抽象角色,它给参加组合的对象定义出
阅读全文
摘要:桥梁模式:将抽象化(Abstraction)与实现化 (Implementation)脱耦,使得二者可以独立地变化. 桥梁模式类图: 抽象化(Abstraction)角色:抽象化给出的定义,并保存 一个对实现化对象的引用。 修正抽象化(Refined Abstraction)角色:扩展抽象化角 色,
阅读全文
摘要:适配器模式:把一个类的接口变换成客户端所期待的另一种接口,从而使原本接口不匹配而无法在一起工作的两个类能够在一起工作。 类的 Adapter模式的结构: 类适配器类图: 由图中可以看出,Adaptee 类没有 Request方法,而客户期待这个方法。为了使客户能够使用 Adaptee 类,提供一个中
阅读全文
摘要:原型模式:通过给出一个原型对象来指明所要创建的对象类型,然后用复制这个原型对象的办法创建出更多的同类型对象。 原型模式类图: 类图说明:客户(Client)角色:客户类提出创建对象的请求。 抽象原型(Prototype)角色:这是一个抽象角色,通常由一个 C#接口或抽象类实现。此角色给出所有的具体原
阅读全文
摘要:建造者模式:可以将一个产品的内部表象与产品的生成过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象 建造都模式UML类图: 类图关系说明: 建造者(Builder)角色:给出一个抽象接口,以规范产品对象的各个组成成分的建造。一般而言,此接口独立于应用程序的商业逻辑。模式中直接创建产
阅读全文
摘要:单件模式:某一个类只有一个实例,并且这个实例是在类内部进行实例化,并向整个系统提供该实例。 单件模式UML类图: class Program { static void Main(string[] args) { Singleton s1 = Singleton.GetSington(); Sing
阅读全文
摘要:抽象工厂模式:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类。 抽象工厂模式类图如下: 抽象工厂(Interface Creator/Factory)角色:担任这个角色的是工厂方法模式的核心,它是与应用系统商业逻辑无关的。 具体工厂(Concrete Creator/Facto
阅读全文
摘要:工厂方法模式:定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法模式让类把实例化推迟到子类。工厂模式的类图如下: 抽象的IFactory提供了一个创建对象方法的接口CreateProduct(),该接口也称为"工厂方法"。在IFactory中,任何其他方法都可以调用CreatePr
阅读全文
摘要:简单工厂模式又叫静态工厂方法模式,是属于创建型的模式, 创建型模式简单的理解就会创建对象并返回相应的实例。简单工厂模式中分类为三个:父类、子类、工厂类。父类决定了子类的具体类别,定义子类要实现的功能;子类实现了父类的功能;工厂类决定了要创建的具体子类实例然后返回该实例。作为静态工厂的使用者只需要知道
阅读全文

浙公网安备 33010602011771号