![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 79
jiangxt211
这个作者很懒,什么都没留下…
展开
-
原型模式(Prototype Pattern)
原型模式(Prototype Pattern)用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。结构参与者Prorotype--声明一个克隆自身的接口。ConcretePrototype--实现一个克隆自身的操作。Client--让一个原型克隆自身从而创建一个新的对象。代码using System;using System原创 2015-09-21 23:30:47 · 288 阅读 · 0 评论 -
桥接模式(Bridge Pattern)
桥接模式(Bridge Pattern)桥接模式(Bridge Pattern),将抽象部分与它的实现部分分离,使它们都可以独立地变化。别名Handle/Body结构参与者Abstraction——定义抽象类的接口。——维护一个指向Implementor类型对象的指针。RefinedAbstraction——扩充由Abstraction定义的接口。原创 2015-10-25 22:47:06 · 333 阅读 · 0 评论 -
工厂方法(FactoryMethod)
工厂方法(Factory Method)工厂方法(Factory Method),定义一个用于创建对象的接口,让子类决定实例化那一个类。Factory Method使一个类的实例化延迟到子类。别名虚构造器(Virtual Constructor)结构参与者Product— 定义工厂方法所创建的对象的接口。ConcreteProduct— 实现Pr原创 2015-09-23 22:46:35 · 274 阅读 · 0 评论 -
组合/聚合复用原则(CARP)
组合/聚合复用原则(CARP),尽量使用组合/聚合,不要使用类继承。组合(Composition,也作合成)和聚合(Aggregation)都是关联的特殊种类。聚合表示一种弱的“拥有”关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分;组合则是一种强的“拥有”关系,体现了严格的部分和整体的关系,部分和整体的生命周期一样。看大雁与雁群、翅膀的关系组合/聚合复用原则原创 2015-11-15 22:20:04 · 770 阅读 · 0 评论 -
外观模式(Facade pattern)
外观模式(Facade pattern):为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。动机将一个系统划分成为若干个子系统有利于降低系统的复杂性。一个常见的设计目标是使子系统间的通信和相互依赖关系达到最小。达到该目标的途径之一是就是引入一个外观(facade)对象,它为子系统中较一般的设施提供了一个单一而简单的界面。原创 2015-11-16 22:03:02 · 326 阅读 · 0 评论 -
中介者模式(Mediator Pattern)
中介者模式(Mediator),用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示地相互应用,从而是其耦合松散,而且可以独立地改变它们之间的交互。结构参与者Mediator(中介者)——中介者定义一个接口用于与个同事(Colleague)对象通信。ConcreteMediator(具体中介者 )——具体中介者通过协调各同事对象实现协作行为。——了解并原创 2015-09-09 22:54:37 · 308 阅读 · 0 评论 -
组合模式(Composite Pattern)
组合模式(Composite pattern):将对象组合成树形结构以表示“部分——整体”的层次结构。Composite使得用户对单个对象和组合对象的使用具有一致性。结构参与者Component——为组合中的对象声明接口。——在适当的情况下,实现所有类共有接口的缺省行为。——声明一个接口用于访问和管理Component的子组件。——(可选)在递归结构中定义一个接口,原创 2015-11-16 23:09:32 · 262 阅读 · 0 评论 -
职责链模式(Chain of Responsibility Pattern)
职责链(Chain of Responsibility):使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。结构对象图参与者Handler——定义一个处理请求的接口。——(可选) 实现后继链。ConcreteHandler——处理它所负责的请求。——原创 2015-11-18 22:32:23 · 247 阅读 · 0 评论 -
状态模式(State Pattern)
状态模式(State Pattern):允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。别名状态对象(Objects for States)实用性1)一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为。2)一个操作中含有庞大的多分支的条件语句,且这些分支依赖于该对象的状态。结构参与者Context——定义客户感兴趣原创 2015-11-19 00:13:10 · 319 阅读 · 0 评论 -
备忘录模式(Memento Pattern)
备忘录模式(Memento Pattern):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。别名Token适用性在以下情况下使用备忘录模式:1)必须保存一个对象在某一个时刻的 (部分) 状态, 这样以后需要时它才能恢复到先前的状态。 2)如果一个用接口来让其它对象直接得到这些状态,将会暴露对象的实现细原创 2015-11-24 21:21:05 · 330 阅读 · 0 评论 -
命令模式(Command Pattern)
命令模式(Command pattern),将一个请求封装为一个对象,从而使你可以用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。别名动作(Action),事务(Transcation)。使用性1)抽象出待执行的动作以参数化某对象。你可用过程语言中的回调(callback)函数表达这种参数化机制。所谓回调函数是指函数先在某处注册,而它将在稍后某个需要的原创 2015-11-30 23:26:38 · 248 阅读 · 0 评论 -
迭代器模式(Iterator Pattern)
迭代器模式(Iterator pattern),提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。别名游标(Cursor)。适用性迭代器模式可用来:1)访问一个聚合对象的内容而无需暴露它的内部表示。2)支持对聚合对象的多种遍历。3)为遍历不同的聚合结构提供一个统一的接口(即,支持多态迭代polymorphic iteration)。结构原创 2015-11-29 19:08:07 · 292 阅读 · 0 评论 -
解释器模式(Interpreter Pattern)
解释器模式(interpreter pattern),给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。动机如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各个实例表述为一个简单语言中的句子。这样就可以构建一个解释器,该解释器通过解释这些句子来解决该问题。(例如:正则表示式)结构参与者AbstractExpres原创 2015-12-02 23:33:42 · 384 阅读 · 0 评论 -
访问者(Visitor Pattern)
访问者(Visitor Pattern)访问者(Visitor Pattern),表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。结构参与者Visitor——为该对象结构中ConcreteElement的每一个类声明一个Visit操作。该操作的名字和特征标识了发送Visit请求给该访问者的那个类。这使得访问者可以原创 2015-10-11 22:54:31 · 386 阅读 · 0 评论 -
建造者模式(Builder Pattern)
建造者模式(Builder Pattern)建造者模式(Builder Pattern),将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。结构参与者Builder——为创建一个Product对象的各个部件指定抽象接口。ConcreteBuilder——实现Builder的接口以构造和装配该产品的各个部件。——定义并明原创 2015-09-20 17:30:24 · 304 阅读 · 0 评论 -
享元模式(Flyweight Pattern)
享元模式(Flyweight Pattern):运用共享技术有效地支持大量细粒度的对象。flyweight是一个共享对象,它可以同时在多个场景(context)中使用,并且在每个场景中flyweight都可以作为一个独立的对象—这一点与非共享对象的实例没有区别。flyweight不能对它所运行的场景做出任何假设,这里的关键概念是内部状态和外部状态之间的区别。内部状态存储于flyweight中,原创 2015-11-08 18:10:09 · 1763 阅读 · 0 评论 -
设计模式
原创 2015-06-01 22:19:24 · 247 阅读 · 0 评论 -
23种设计模式
目录创建型1. Factory Method(工厂方法)2. Abstract Factory(抽象工厂)3. Builder(建造者)4. Prototype(原型)5. Singleton(单例)结构型6. Adapter Class/Object(适配器)7. Bridge转载 2015-06-25 21:06:54 · 240 阅读 · 0 评论 -
单例模式(Singleton Pattern)
单例模式(Singleton Pattern)确保一个类只有一个实例,并提供一个全局访问点。1、经典实现1)利用一个静态变量来记录Singleton类的唯一实例;2)将构造器声明为私有的;3)使用GetInstance()方法实例化对象,并返回该实例(全局访问点)。 class Singleton { private s原创 2015-08-26 00:06:46 · 218 阅读 · 0 评论 -
UML类图几种关系的总结
在UML类图中,常见的有以下几种关系:泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency) 1.泛化(Generalization)【泛化关系】:是一种继承关系,它指定了子类如何特化父类的所有特征和行为例如:老虎是动物的一种.转载 2015-08-30 23:17:35 · 277 阅读 · 0 评论 -
UML序列图总结
转载出处:htt://blog.csdn.net/tianhai110 序列图主要用于展示对象之间交互的顺序。序列图将交互关系表示为一个二维图。纵向是时间轴,时间沿竖线向下延伸。横向轴代表了在协作中各独立对象的类元角色。类元角色用生命线表示。当对象存在时,角色用一条虚线表示,当对象的过程处于激活状态时,生命线是一个双道线。消息用从一个对象的生命线到另一个对象生命线的箭头表示转载 2015-08-30 23:19:06 · 269 阅读 · 0 评论 -
策略模式(Strategy Pattern)
策略模式(Strategy Pattern)策略模式定义了一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。别名:Policy(方针)结构:代码:using System;using System.Collections.Generic;using System.Linq;using System.Text;n原创 2015-09-05 21:11:34 · 348 阅读 · 0 评论 -
设计模式之UML类图的常见关系
转载自http://www.cnblogs.com/zxj159/p/3399654.html本篇会讲解在UML类图中,常见几种关系: 泛化(Generalization),依赖(Dependency),关联(Association),聚合(Aggregation),组合(Composition)。1.泛化关系泛化关系是继承或实现的关系,是is a关系,具体表现为类与类的继承,接口转载 2015-09-04 23:54:29 · 305 阅读 · 0 评论 -
模式总结(一)——创建型模式(Creational Pattern)
1)工厂方法(Factory Method)定义一个用于创建对象的接口,让子类决定实例化那一个类。Factory Method使一个类的实例化延迟到子类。别名虚构造器(Virtual Constructor)结构参与者Product——定义工厂方法所创建的对象的接口。ConcreteProduct——实现Product接口。Creator——原创 2015-09-27 22:28:10 · 482 阅读 · 0 评论 -
抽象工厂(Abstract Factory)
抽象工厂(Abstract Factory)抽象工厂,提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。别名Kit结构参与者AbstractFactory——声明一个创建抽象产品对象的操作接口。ConcreteFactory——实现创建具体产品对象的操作。AbstractProduct——为一类产品对象声明一个接口。Conc原创 2015-09-27 18:31:02 · 256 阅读 · 0 评论 -
模板方法模式(Template Method Pattern)
模板方法模式(Template Method Pattern),定义一个操作中算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 参与者AbstractClass(抽象类)— 定义抽象的原语操作(primitive operation),具体的子类将重定义它们以实现一个算法的各步骤。— 实现一个模板方法 ,定义一个原创 2015-09-12 17:52:41 · 269 阅读 · 0 评论 -
观察者模式(Observer Pattern)
观察者(Observer)模式1、意图定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。观察者模式定义了一种一对多的依赖关系,让多个观察者(observer)对象同时监听某一个主题(subject)对象。这个主题对象在状态发生变化时,会通知所有观察值对象,使它们能够自动更新自己。2、别名依赖(Depend原创 2015-06-25 22:31:22 · 291 阅读 · 0 评论 -
代理模式(Proxy Pattern)
代理模式(Proxy Pattern)代理模式(Proxy Pattern),为其他对象提供一种代理以控制对这个对象的访问。别名:Surrogate代理的种类1)远程代理(Remote Proxy)为一个对象在不同的地址空间提供局部代表。2)虚代理(Virtual Proxy)根据需要创建开销很大的对象。3)保护代理(Protection Proxy)控制对原始对象的访原创 2015-10-19 23:39:52 · 334 阅读 · 0 评论 -
装饰者模式(Decorator Pattern)
装饰者模式(Decorator Pattern)装饰者模式(Decorator Pattern),动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。别名包装器Wrapper结构参与者Component——定义一个对象接口,可以给这些对象动态地添加职责。ConcreteComponent——定义一个对象,可原创 2015-10-07 21:49:14 · 333 阅读 · 0 评论 -
适配器模式(Adapter Pattern)
适配器模式(Adapter pattern):将一个类的接口转换成客户希望的另外的接口。 Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。别名包装器Wrapper类适配器和对象适配器1、类适配器使用多重继承对一个接口与另一个接口进行匹配;2、对象匹配器依赖于对象组合。参与者Target——定义Client使用的与特定领域相关的接口原创 2015-11-15 20:56:58 · 405 阅读 · 0 评论