随笔分类 -  设计模式

摘要:备忘录模式(Memento Pattern),在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以就该对象恢复到原先保存的状态。当系统功能比较复杂,而且需要记录历史属性以便当需要时做恢复动作。Originator可以根据保存的Memento信息还原到前一状态。 u... 阅读全文
posted @ 2014-07-12 23:45 欢呼雀跃 阅读(180) 评论(0) 推荐(0)
摘要:GOF给中介者模式下的定义是:用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它 们之间的交互。简单点来说,将原来两个直接引用或者依赖的对象拆开,在中间加入一个“中介”对象,使得两头的对象分别和“中介”对象引用或者依赖。using Sys... 阅读全文
posted @ 2014-07-12 23:26 欢呼雀跃 阅读(189) 评论(0) 推荐(0)
摘要:在面向对象程式设计里,迭代器模式是一种设计模式,是一种最简单也最常见的设计模式。它可以让使用者透过特定的接口巡访容器中的每一个元素而不用了解底层的实作。定义:提供一种方法访问一个容器对象中各个元素,而又不暴露该对象的内部细节。using System;using System.Collections... 阅读全文
posted @ 2014-07-12 23:11 欢呼雀跃 阅读(125) 评论(0) 推荐(0)
摘要:? 阅读全文
posted @ 2014-07-12 22:10 欢呼雀跃 阅读(99) 评论(0) 推荐(0)
摘要:在面向对象程式设计的范畴中,命令模式是一种设计模式,它尝试以物件来代表实际行动。命令物件可以把行动(action) 及其参数封装起来,于是这些行动可以被:重复多次取消(如果该物件有实作的话)取消后又再重做这些都是现代大型应用程式所必须的功能,即“复原”及“重复”。除此之外,可以用命令模式来实作的功能... 阅读全文
posted @ 2014-07-12 20:59 欢呼雀跃 阅读(212) 评论(0) 推荐(0)
摘要:在面向对象程式设计里,责任链模式是一种软件设计模式,它包含了一些命令对象和一系列的处理对象。每一个处理对象决定它能处理哪些命令对象,它也知道如何将它不能处理的命令对象传递给该链中的下一个处理对象。该模式还描述了往该处理链的末尾添加新的处理对象的方法。举例:总裁,副总,经理,都可以批准请假,经理批准有... 阅读全文
posted @ 2014-07-11 06:01 欢呼雀跃 阅读(202) 评论(0) 推荐(0)
摘要:代理模式(英语:Proxy Pattern)是程序设计中的一种设计模式。所谓的代理者是指一个类型可以作为其它东西的接口。代理者可以作任何东西的接口:网络连接、存储器中的大对象、文件或其它昂贵或无法复制的资源。举例:就像演武侠电影,这个动作有危险,明星说给我个替身叫替身来演,替身做明星不想做的事,示意... 阅读全文
posted @ 2014-07-11 05:12 欢呼雀跃 阅读(179) 评论(0) 推荐(0)
摘要:享元模式(英语:Flyweight Pattern)是一种软件设计模式。它使用共享物件,用来尽可能减少内存使用量以及分享资讯给尽可能多的相似物件;它适合用于当大量物件只是重复因而导致无法令人接受的使用大量内存。通常物件中的部分状态是可以分享。常见做法是把它们放在外部数据结构,当需要使用时再将它们传递... 阅读全文
posted @ 2014-07-10 16:51 欢呼雀跃 阅读(148) 评论(0) 推荐(0)
摘要:外观模式(Facade pattern),是软件工程中常用的一种软件设计模式,它为子系统中的一组接口提供一个统一的高层接口,使得子系统更容易使用。意图:using System;using System.Collections.Generic;using System.Linq;using Syst... 阅读全文
posted @ 2014-07-10 15:54 欢呼雀跃 阅读(162) 评论(0) 推荐(0)
摘要:修饰模式,是面向对象编程领域中,一种动态地往一个类中添加新的行为的设计模式。就功能而言,修饰模式相比生成子类更为灵活,这样可以给某个对象而不是整个类添加一些功能。通过使用修饰模式,可以在运行时扩充一个类的功能。原理是:增加一个修饰类包裹原来的类,包裹的方式一般是通过在将原来的对象作为修饰类的构造函数... 阅读全文
posted @ 2014-07-10 15:33 欢呼雀跃 阅读(152) 评论(0) 推荐(0)
摘要:有时候又叫做部分-整体模式,它使我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以像处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦。组合模式让你可以优化处理递归或分级数据结构。有许多关于分级数据结构的例子,使得组合模式非常有用武之地。关于分级数据结构的一个普... 阅读全文
posted @ 2014-07-10 14:00 欢呼雀跃 阅读(160) 评论(0) 推荐(0)
摘要:桥接模式是软件设计模式中最复杂的模式之一,它把事物对象和其具体行为、具体特征分离开来,使它们可以各自独立的变化。意图:事物对象仅是一个抽象的概念,如一个杯子,杯子形状各不相同,根据形状大小不一烧制杯子的方法也不一样。using System;using System.Collections.Gene... 阅读全文
posted @ 2014-07-10 11:56 欢呼雀跃 阅读(181) 评论(0) 推荐(0)
摘要:在设计模式中,适配器模式(英语:adapter pattern)有时候也称包装样式或者包装。将一个类的接口转接成用户所期待的。一个适配使得因接口不兼容而不能在一起工作的类工作在一起,做法是将类别自己的接口包裹在一个已存在的类中。意图:using System;using System.Collect... 阅读全文
posted @ 2014-07-10 11:08 欢呼雀跃 阅读(139) 评论(0) 推荐(0)
摘要:原型模式是创建型模式的一种,其特点在于通过“复制”一个已经存在的实例来返回新的实例,而不是新建实例。被复制的实例就是我们所称的“原型”,这个原型是可定制的。原型模式多用于创建复杂的或者耗时的实例,因为这种情况下,复制一个已经存在的实例使程序运行更高效;或者创建值相等,只是命名不一样的同类数据。我们先... 阅读全文
posted @ 2014-07-10 10:17 欢呼雀跃 阅读(160) 评论(0) 推荐(0)
摘要:总述:在工厂方法中,工厂类成了抽象类其实际的创建工作将由其具体子类子类来完成。工厂方法的用意是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中去,强调的是“单个对象”的变化。在软件系统中,经常面临着“某个对象”的创建工作,由于需求的变化,这个对象的具体实现经常面临着剧烈的变化,但是它却拥有... 阅读全文
posted @ 2014-07-09 09:26 欢呼雀跃 阅读(177) 评论(0) 推荐(0)
摘要:总述:把构造对象实例的逻辑移到了类的外部,在这个类外部定义了这个类的构造逻辑。它把一个复杂对象的构造过程从对象的表示中分离出来。其直接效果是将一个复杂的对象简化为一个比较简单的对象。它强调的是产品的构造过程。在软件系统中,有时候面临着“一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构... 阅读全文
posted @ 2014-07-09 04:40 欢呼雀跃 阅读(201) 评论(0) 推荐(0)
摘要:总述:抽象工厂模式是所有工厂模式中最为抽象和最具有一般性的一种形态。抽象工厂可以向客户提供一个接口,使得客户可以在不必指定产品的具体类型的情况下,创建多个产品族中的产品对象,强调的是“系列对象“的变化。在软件系统中,经常面临“一系列相互依赖的对象“的创建工作;相比 较工厂模式强调的是”单个对... 阅读全文
posted @ 2014-07-09 03:09 欢呼雀跃 阅读(194) 评论(0) 推荐(0)
摘要:定义:保证一个类仅有一个实例,并且提供一个访问它的全局访问点。类图:单例模式根据实例化对象时机的不同分为两种:一种是饿汉式单例,一种是懒汉式单例。饿汉式单例在单例类被加载时候,就实例化一个对象交给自己的引用;而懒汉式在调用取得实例方法的时候才会实例化对象。代码如下饿汉式单例 public class... 阅读全文
posted @ 2014-07-08 23:54 欢呼雀跃 阅读(148) 评论(0) 推荐(0)
摘要:设计模式中类与类之间主要有6种关系,他们分别是:依赖、关联、聚合、组合、继承、实现。他们的耦合度依次增强。泛化(generalization)泛化关系是类元的一般描述和具体描述之间的关系,具体描述建立在一般描述的基础之上,并对其进行了扩展。例如:dog(狗)继承了Animal(动物)类, Anima... 阅读全文
posted @ 2014-07-08 21:18 欢呼雀跃 阅读(304) 评论(0) 推荐(0)