Desgin Patterns
jhlovett
这个作者很懒,什么都没留下…
展开
-
Singleton Pattern
单件模式:(Singleton pattern) 1.目的 1) 在全局范围内控制一个对象只能有一个唯一的实例 2.作用 具体程序设计中往往需要保证一个类只能有一个实例 如: 一个客户端只能有一个数据库连接; 为了节省资源,配置文件只能被加载一次; 虽然又多个串行端口,但使能又一个COM1实例(比如对嵌入式编程,对外设开发驱动程序等等) 3.单件模式的机制 1) 单件模式保证只能常见对象的唯一一...2009-03-16 16:50:55 · 98 阅读 · 0 评论 -
VisitorPattern
意图表示一个作用于某对象结构中的各元素的操作.它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作. 意图中的-->某对象结构:可以理解为集合,它们相当于一个聚集一样,里面可以放置多个元素,访问者模式作用于聚集中每一个元素的不同操作. 我们想修改某个对象的新操作必然要修改该对象定义的类,在类里面增加相应的方法,这样这个对象就具备了新的操作.访问者模式不需要修改这个对象...2009-05-01 19:20:18 · 92 阅读 · 0 评论 -
MementoPattern
意图在不破坏封装性的前提下,捕获一个对象内部状态,并在该对象之外保存这个状态.这样以后就可将该对象恢复到原先保存的状态. 适用性必须保存一个对象在某一个时刻的(部分)状态,这样以后需要时它才能恢复到先前的状态. 构成:1.备忘录(Memento)角色:保持原发器(Originator)的内部状态,根据原发器来决定保存哪些内部的状态.(备忘录角色就好比是一个日记本把当前发生的一些事情...2009-05-01 16:10:10 · 84 阅读 · 0 评论 -
MediatorPattern
意图用一个中介对象封装一系列的对象交互.中介者使各对象不需要显式地相互引用,从而使得其耦合松散,而且可以独立地改变他们之间的交互. 比如:有两个人,张三,李四,它们交互非常频繁,那么这两个对象之间耦合性比较强,那么改其中一个对象会对另一个对象产生直接的影响,如果在张三和李四之间加了另外一个中介者,张三和李四之间的交互完全通过中介者来传递,假设张三向和李四说一句话,那么张三就和中介者去说这句...2009-05-01 11:16:38 · 89 阅读 · 0 评论 -
Statepattern
意图允许一个对象在其内部状态改变时改变它的行为. 适用性1.一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为.一个对象有不同的行为,这个行为是由它的状态来决定的,一个对象的状态是由它的成员变量来决定的.比如一个Person类,它有两个成员变量,一个姓名name,一个年龄age,当Person这个类生成相应的对象之后,这个对象一旦名字或者年龄发生变化,我们说这个对象它的...2009-04-30 13:45:31 · 101 阅读 · 0 评论 -
Chain of Responsibility Pattern
意图使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系.将这些对象连成一条链,并沿着这条链传递请求,直到有一个对象处理它为止. 责任链模式相当于数据结构的链表一样,数据结构链表分为单项链表,双项链表,单项循环链表,双项循环链表.责任链模式就是这种行为的反映,它就是相当于将多个对象连成一条链,接着第一个对象收到一个请求该对象决定是否处理请求,如果该对象处理请求则处理请求,...2009-04-28 23:23:00 · 80 阅读 · 0 评论 -
InterpreterPattern
意图给定一个语言之后,解释器模式可以定义出其文法的一种表示,并同时提供一个解释器.客户端可以使用这个解释器来解释这个语言中的句子. 比如说对任何一种语言,已经把它语法的解释都已经解释出来了,接着这个语言的任何一个句子我都可以对它进行解释. 适用性当有一个语言需要解释执行,并且你可将该语言中的句子表示为一个抽象语法树时,可使用解释器模式.而当存在以下情况时该模式效果最好:该文法简单,...2009-04-28 14:43:43 · 103 阅读 · 0 评论 -
IteratorPattern
意图提供一种方法顺序访问一个聚合对象中各个元素,而又不许暴露该对象的内部表示.什么叫聚合对象--->就是类似与数组或集合的对象.其实就是将一些对象放到一个聚合中,来一起组织它们,来遍历它,或者得到当前的某个元素. 适用性1.访问一个聚合对象的内容而无须暴露它的内部表示.聚合对象可能是数组或者集合,我们在迭代聚合对象的时候不需要知道它底层是用什么来表示的,也就是不需要知道用数组还是集合...2009-04-26 18:15:55 · 190 阅读 · 0 评论 -
CommandPattern
意图:将一个请求封装为一个对象,从而使你可用不同个的请求对客户端进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作. 构成1.客户角色:创建一个具体命令对象,并确定其接收者.2.命令角色:声明一个给所有具体命令类的抽象接口.这是一个抽象角色,通常由一个接口或抽象类实现. (Command角色会维护一个Receiver对象的一个引用,最终是调用Receiver来执行我们的动作)3....2009-04-26 13:35:25 · 93 阅读 · 0 评论 -
StrategyPattern
策略模式(Strategy Pattern) 中体现了两个非常基本的面向对象设计原则 1.封装变化概念.2.编程中使用接口,而不是对接口实现.换句话说就是面向接口编程. 策略模式的定义 1.定义了一组算法,将每个算法都封装起来,并且使它们之间可以互换. 2.StrategyPattern使这些算法在客户端调用它们的时候能够互不影响变化. 比如:完成某件事情的方法有多种,这多种...2009-04-25 19:08:59 · 98 阅读 · 0 评论 -
TemplateMethodPattern
TemplateMethodPattern:定义一个操作中算法的骨架,而将一些步骤延伸到子类中去,使得子类可以不改变一个算法的结构,既可重新定义算法的某些特定步骤,这里需要复用的是算法的结构,也就是步骤,而步骤的实现可以再子类中完成. 使用场合:1).一次性实现一个算法的不变部分,并且将可变的行为留给子类来完成. 2).各子类公共的行为应该被抽取出来并集中到一个公共类中以避免代码的...2009-04-25 13:24:08 · 92 阅读 · 0 评论 -
PrototypePattern
意图用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象. 原型模式基于.net中深拷贝和浅拷贝的概念. 注意:如果不明白深拷贝和浅拷贝的概念请查看:http://jhxk.iteye.com/blog/373211 适用性1).当要实例化的类是在运行时刻指定时,例如,通过动态装载 2).为了避免创建一个与产品类层次平行的工厂类层次时什么叫做与产品类平行的...2009-04-23 15:46:26 · 119 阅读 · 0 评论 -
追MM与23种设计模式
1、FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory 工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:如何创建及如何向客户...原创 2009-04-21 15:13:38 · 61 阅读 · 0 评论 -
AbstractFactoryPattern
意图 提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类. 适用性 一个系统要独立于它的产品的创建、组合和表示时. 一个系统要由多个产品系列中的一个来配置时. 当你要强调一系列相关产品对象的设计以便进行联合使用时. 当你提供一个产品类库,而只想显示它们的接口而不是实现时. 抽象工厂模式的构成 抽象工厂角色(AbstractFactory):声明生成抽象产...2009-04-21 13:23:53 · 104 阅读 · 0 评论 -
FactoryMethodPattern
工厂方法(FactoryMethod)模式是类的创建模式,其用意是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中。 工厂方法模式是简单工厂模式的进一步抽象和推广。由于使用了多态性,工厂方法模式保持了简单工厂模式的优点,而且克服了它的缺点。工厂方法模式又称为多态工厂模式. 在工厂方法模式中,核心的工厂类不再负责所有产品的创建,而是将具体创建工作交给子类去做。这个核心类仅仅负...2009-04-19 22:20:32 · 92 阅读 · 0 评论 -
ObserverPattern
观察者模式又叫做发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式。 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象.这个主题对象在状态上发生变化时,会通知所有观察者对象,让他们能够自动更新自己。 一个软件系统常常要求在某一个对象的状态发...2009-03-27 17:40:27 · 191 阅读 · 0 评论 -
SimpleFactoryPattern
工厂模式专门负责将大量有共同接口的类实例化。工厂模式可以动态决定将哪一个类实例化,不必事先知道每次要实例化哪一个类。 工厂模式有以下几种形态:简单工厂(Simple Factory)模式 工厂方法(Factory Method)模式 抽象工厂(Abstract Factory)模式Simple Factory模式实际上不是GoF 23个设计模式中的一员。 简单工厂又叫做静态工厂方法(Stati...2009-03-26 00:57:16 · 133 阅读 · 0 评论 -
Builder Pattern
建造者(Builder)模式 意图 建造者模式可以将一个产品的内部表象与产品的生成过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。 比如:要创建一个对象分为三个步骤,第一,二,三步是同样的步骤,但是可以创建出不同的对象内容. 适用性 1).当创建复杂对象的算法应该独立于该对象的组成部分以及他们的装配方式时(创建对象的过程和对象的组成进行分离--->...2009-03-21 18:47:36 · 100 阅读 · 0 评论 -
AbstractFactoryPattern(二)
关于抽象工厂(Abstract Factory)模式,网上一个非常流行的例子,麦当劳和肯德基的故事。具体怎么说的我已经忘了,但是我想自己描述一遍,希望能让自己加深对设计模式思想的理解,也希望对大家有所帮助。 既然叫抽象工厂,那一定有工厂(废话)。那么我们可以认为麦当劳和肯德基就是生产食物的工厂,那么理所当然,汉堡和鸡腿是他们共同生产的两种食物,不管你去MDL还是KDJ,说:我要鸡腿,那肯定...原创 2009-05-01 21:42:01 · 95 阅读 · 0 评论