Design Pattern
文章平均质量分 78
watkins
这个作者很懒,什么都没留下…
展开
-
C#设计模式之——创建型模式总结
在所有的创建型模式中,处理的都是创建对象的方法,程序不应该依赖于创建和安排对象的方式。许多情况下,被创建的对象的确切特性可能因为程序需要而不同,因此把创建过程抽象到一个特定的创建者类中,可以使得程序更加灵活通用。 1. 简单工厂模式:http://blog.csdn.net/weixingstudio/article/details/72344232. 工厂方法模式:http://bl原创 2012-02-23 13:49:30 · 1415 阅读 · 0 评论 -
C#设计模式之6——原型模式
一般情况下,目标类克隆原型中的数据,然后加以改造利用构造自己可以利用的数据。目标类通过克隆一个或多个原型类来构造,然后再修改或者是填充克隆出来的类的细节以使得其行为符合预先期望。 原型模式一般设计对父类数据的克隆问题。 一般情况下,如果一个类包含一个数组成员,并且这个类实现了ICloneable接口,那么这个类就可以使用Clone()方法来进行克隆,但是克隆是否符合我们的要求就不一定了原创 2012-02-20 22:30:21 · 3081 阅读 · 0 评论 -
C#设计模式之16——解释器模式
C#设计模式之16——解释器模式有些程序受益于以一种语言来描述其能够执行的操作。解释器模式描述的内容通常包括:定义该种语言的语法,并使用这一语法来解释以该种语言做陈述的语句。当某个程序要处理多种不同但是又有些类似的情形时,使用一种简单的语言来描述这些情形让程序来解释这种语言回事一种非常好的有效的方式。这有些类似宏定义,通过宏定义,然后后面的解释器解释这个宏的操作。也有点类似在SQL查询语句原创 2012-03-02 13:55:47 · 3542 阅读 · 0 评论 -
C#设计模式之17——迭代器模式
迭代器(Iterator)是最简单和最经常用到的模式之一。迭代器模式允许无需了解数据的内部表示的情况下,使用一个标准的接口来遍历该数据集合。总之,迭代器是为了方便的进行数据遍历用的,可以在不了解数据的具体数据结构的或者数据的内部组织结构的时候提供一个方便的遍历数据接口。一个个的返回数据。迭代器很有用处,因为其提供了一种预先定义好的方式来遍历数据元素集合而又无需暴漏类内部放生的事情。C#中I原创 2012-03-02 14:41:58 · 3041 阅读 · 0 评论 -
C#设计模式之20——观察者模式
观察者模式可以用来同时以多种方式表示数据。我们可能有一组数据,然后希望同时在用户界面用多种表示方式显示这组数据,比如用表格和绘图的两种方式。并且当数据发生变化的时候我们希望数据的显示能够自动的更新,这就需要我们使用观察者模式。观察者模式假设包含数据的对象与显示的对象是分离的,显示对象就需要观察数据中的变化。在实现观察者模式的时候,我们通常把数据成为主题(Subject),把每种显示方式成为原创 2012-03-03 14:56:56 · 5254 阅读 · 0 评论 -
C#设计模式之18——中介者模式
随着越来越多的类在程序中被开发出来,这些类之间的通信问题变得越来越复杂。每个类需要知道其他类的方法越多,类的结构就容易变得混乱,这使得程序不易于阅读和维护。另外,对程序的修改也变得困难起来,因为任何修改都会影响到其他多个类的代码。中介者模式通过促进这些类之间更加松散的耦合来解决这一问题。中介者实现这样一做法的方式是,成为唯一一个详细了解其他类的方法的类,其他的类在改变发生的时候通知中介者,中介者把原创 2012-03-02 16:00:17 · 3595 阅读 · 0 评论 -
C#设计模式之19——备忘录模式
备忘录模式用来保存与对象有关的数据,这样可以在将来对对象进行复原。例如在绘图程序中需要保存对象的颜色尺寸等。备忘录模式中定义了三个角色:1. 发起者:指我们要保存其状态的对象,比如说一个图形对象的位置,颜色等。2. 备忘录: 保存发起者状态的对象。3. 监护者: 管理状态的保存时机,保存备忘录,以及如果需要的话使用备忘录回复发起者的状态。 我们举个例子来具体的了解备忘录模式原创 2012-03-03 10:28:35 · 2879 阅读 · 1 评论 -
C#设计模式之23——模板方法模式
模板方法模式是非常简单的一个模式。任何时候只要你编写了一个父类,并在类中留有一个或者多个方法给派生类实现,实质上就是在使用模板模式。模板模式形式化了在类中定义算法但是把算法的实现细节留个子类实现这一想法。模板方法模式有四种可能在派生类中使用的方法:1. 完整的方法,这些方法可以被派生类继承。2.完全没有填写的方法,方法主体为空。3. 包含某些操作的默认实现的方法,但是有可能在派生类原创 2012-03-05 15:19:51 · 3564 阅读 · 0 评论 -
C#设计模式之21——状态模式
状态模式中,可以通过对象表示应用的状态,并通过切换对象来切换应用程序的状态。可以让一个类在多个被包含的相关类之间做切换,并把方法调用差地给当前的被包含类。我们编程中,经常会遇到基于传到类中的参数来创建不同的对象,这些对象或者显示不同的信息,或者执行不同的计算。这经常会在决定执行哪种行为的类的内部导致某些类型的select case或者if-else语句的出现,如果过多的这些语句,对于程序的理解原创 2012-03-05 12:51:19 · 4478 阅读 · 1 评论 -
C#设计模式之22——策略模式
策略模式由一组相关的算法组成,这些算法被封装在称为Context的驱动类中。客户端程序可以选择这些不同的算法之一,或者由Context类来自动选择最合适的算法。该模式的目的是使得这些算法之间可以互换,并提供一种最合适算法的方式。该模式与状态模式的区别是,在策略模式中,用户一般会选中几个不同策略中的一个加以使用,统一时间内只能有一个i额策略被 实例化以及活动于Context的内部。然而在状态模式中,原创 2012-03-05 14:18:16 · 2958 阅读 · 0 评论 -
C#设计模式之24——访问者模式
访问者模式倒转了面向对象模型的做法,创建一个外部对象来操作其他类中的数据。即把应该属于一个类的操作放在另一个类的内部。访问每个类则意味着调用一个已经为此目的而事先安排好的被称作accept的方法。accept方法有一个参数:访问者实例。相应的反过来,被访问类在调用访问者的visit方法,这样就把自身作为参数传递给了访问者。public virtual void accept(Visit原创 2012-03-05 17:52:41 · 3367 阅读 · 0 评论 -
C#设计模式之——总结
经过一段时间,已经把C#的常用的24种设计模式简要的介绍了一下,可能介绍的不好,因为有些东西我也不熟悉,描述的也不是很清楚,还请各位多多指教。简要的说,设计模式提供了一种优雅的,通用的可重用解决方案。可以通过设计模式组织程序中的对象,使其更易于修改和维护。 以前文章中所有设计模式的代码下载地址:http://download.csdn.net/detail/weixingstudio/原创 2012-03-05 18:01:38 · 1730 阅读 · 0 评论 -
C#设计模式之15——命令模式
职责链沿着类组成的链转发请求,而命令模式只是把请求转发给某个特定的对象。把针对某种特定行为的请求封装在一个对象中,并为请求指定一个大家所知的共有接口。让客户端可以实现无需对将要完成的实际行为做任何了解的情况下创建请求,并允许在不影响客户端程序的情况下以任何方式修改行为。我们的C#桌面应用程序中,按钮的代码一般都会自动的生成一个函数,与应用程序界面代码混合在一起,但是如果按钮多了的话,对于代码的原创 2012-02-29 12:41:14 · 3925 阅读 · 0 评论 -
C#设计模式之13——代理模式
在需要使用一个比较简单的对象来表示一个复杂的或者花费时间创建的对象时,就需要用到代理(Proxy)模式。如果创建对象需要的时间开销较大或者需要较多的计算机资源,代理模式允许你把这一创建过程推迟到需要用到实际的对象时才进行。代理通常有着与其所代表的对象一样的方法,一旦对象被载入,其就把方法调用从代理传递给实际对象。 一下情况可以使用代理模式:1. 大图像一类的对象,需要很长的加载时间。原创 2012-02-27 19:49:57 · 2366 阅读 · 1 评论 -
C#设计模式之——结构型模式导引
结构型模式描述了如何把类和对象组合起来以形成更大的结构。 类模式和对象模式的区别为:1. 类模式描述的是如何能够通过继承来提供更加游泳的编程接口。2,对象模式描述的则是如何通过使用对象组合或者对象对其他的对象的包含来创建更大型的结构。 例如:适配器模式可以用来使得一个类的接口与其他的类相匹配,就会使得编程更加容易。组合模式就是一种对对象的组合,组合中每个对象可能是一种简单的对象,也原创 2012-02-23 13:58:44 · 1266 阅读 · 0 评论 -
C#设计模式之7——适配器模式
适配器(Adapter)模式的作用是把一个类的编程接口转换成另外一个类的编程接口,任何时候只要是想让一些无关的类在某个程序中相互配合,一起工作,都可以使用适配器模式。适配器的概念相当简单:编写一个有着 所希望的接口的类,让后让该类与其他有着不同接口的类进行沟通。有两种方法可以做到这一点:通过继承和通过对象组合。在继承方法中,我们从不适用的对象中派生出一个新的对象,然后添加所需要的方法使得新原创 2012-02-23 20:37:27 · 2886 阅读 · 0 评论 -
C#设计模式之8——桥接模式
桥接(Bridge)模式很像适配器模式,两者都是使用类把一种接口转换为另一种接口;然而,适配器的意图是使得一个或者多个类的接口与某个特定类的接口看起来一样,而桥接模式的设计目标是分离类的接口和实现,这样就可以变更或是更换实现而无需修改客户端的代码。这也就是平时我们说的非常多的面向对象编程可以把接口和实现分离开来,然而大部分的功能还是要通过类的多态性来实现,以及通过接口访问实现类的成员。 桥原创 2012-02-24 12:38:08 · 4807 阅读 · 0 评论 -
C#设计模式之9——组合模式
一般情况下,组件可以是单独的一个对象,也可以是对象的组合,组合模式就是为了迎合这两种情况进行设计。组合可以被用来构建部分-整体层次结构,或者是构造树形的数据表示方式。组合是对象的集合,而其中的任何一个对象又可能是一个组合,或者是一个简单的对象。在树形结构中,访问组合中所有的对象要求有一个简单的单一访问接口,但同时要求能够区分开节点和叶子。在构造组合的时候,我们需要决定哪个节点是元素哪个是叶子。原创 2012-02-24 17:14:44 · 4231 阅读 · 3 评论 -
C#设计模式之4——单件模式
1. 简单工厂模式:http://blog.csdn.net/weixingstudio/article/details/72344232. 工厂方法模式:http://blog.csdn.net/weixingstudio/article/details/72347003. 抽象工厂模式:http://blog.csdn.net/weixingstudio/article/details原创 2012-02-17 13:38:50 · 3011 阅读 · 0 评论 -
C#设计模式之3——抽象工厂模式
1. 简单工厂模式:http://blog.csdn.net/weixingstudio/article/details/72344232. 工厂方法模式:http://blog.csdn.net/weixingstudio/article/details/7234700 声明:本文章参考引用《C#设计模式》(科学出版社)一书。 抽象工厂(Abstract Factory)模式原创 2012-02-09 17:52:56 · 3644 阅读 · 0 评论 -
C#设计模式之5——生成器模式
工厂模式一般都是根据传递给创建方法的参数来返回不同的几个子类的一个,不过如果我们需要的不仅仅是一个算法,还需要显示数据,不同的子类要有不同的显示数据方法,需要一个完全不同的用户界面,这样我们就可能需要生成器模式了。 生成器模式中,返回的并不是基本显示对象的子类简单代码,而是显示对象的不同组合构成的完全不同的用户界面。生成器模式根据数据,以多种方式把注入显示控件一类的许多对象组装在一起,通过原创 2012-02-18 22:55:17 · 3168 阅读 · 1 评论 -
C#设计模式之1——简单工厂模式
本人最近学习C#设计模式,所以把自己学到的东西写出来和大家分享一下。关于C#的设计模式将会有一个专题来写。 在OO编程中最常用到的一个模式就是简单工厂(Simple Factory)模式。简单工厂模式根据提供的数据或者参数返回几个可能的类中的一个实例,说通俗点有点像面向对象编程中的多态性,一个基类,有多个派生类,在另外的调用程序中,根据参数来决定返回这个基类的哪个具体的派生类,返回值为原创 2012-02-05 10:27:58 · 11388 阅读 · 6 评论 -
C#设计模式之2——工厂方法模式
上一个设计模式连接: http://blog.csdn.net/weixingstudio/article/details/7234423这个CSDN的编辑器不是很好用,不知道为什么插入代码以后就没有了文本编辑的地方,结果后来的所有文本都以代码显示了。 在简单工厂模式中,需要由某个类充当指挥者,决定集成层次中的哪一个子类被实例化。 工厂方法(Factory Method)原创 2012-02-05 14:33:34 · 3140 阅读 · 1 评论 -
C#设计模式之11——外观模式
外观模式被用来把一组复杂的类包装在一个比较简单的封装接口中。随着类的不断发展,可能会存在一些复杂的子系统,并且每个子系统有着自己复杂的接口。外观模式允许通过给这些子系统提供一个简化了的接口来降低这一复杂性。在降低复杂性的同时,用户也可以自己选择直接使用底层的方法。在C#中ADO.NET的组件有着非常复杂的数据应用,我们这里的例子就是对ADO.NET组件中的类进行封装,提供一个比较简单的对数原创 2012-02-26 21:33:30 · 1979 阅读 · 0 评论 -
C#设计模式之10——装饰器模式
装饰器模式提供了一种在无需创建新的派生类的情况下修改个体对象行为的方式。假设我们需要给工具栏中的按钮添加一个特殊的边框,如果我们创建一个新的派生出来的按钮类,那么就意味着这一新类的所有按钮都会有相同的特殊的边框,这可能并不是我们最初想要的结果。替代的做法是,我们可以创建一个装饰器类来修饰按钮,然后从这一主修饰器类中派生出任意特定的装饰器,每个装饰器完成某种特定类型的装饰。这是另一种对象包含比对原创 2012-02-26 16:11:03 · 5007 阅读 · 0 评论 -
C#设计模式之——结构型模式总结
结构型模式总结:1. 适配器模式 http://blog.csdn.net/weixingstudio/article/details/7288368 用于把一个类的接口改变成另外一个类的接口。 2. 桥接模式 http://blog.csdn.net/weixingstudio/article/details/728998原创 2012-02-27 20:01:12 · 1515 阅读 · 0 评论 -
C#设计模式之14——职责链模式
职责链模式允许多个类尝试着去处理一个请求,在这种情况下,这些类中的任何一个都不了解其他类的功能。该模式在这些类中提供一个松散耦合,唯有的共同联系是他们直接传递的请求。请求一直沿着链传递,知道有一个类能处理位置。典型的例子就是应用软件的帮助系统,如果某个按钮有帮助信息,就会显示信息,否则则把帮助请求传递给下一模块,最终的情况是,消息被发送个一个广泛的帮助类,显示一个通用的帮助信息。这个数据结构非原创 2012-02-28 13:30:32 · 2473 阅读 · 1 评论 -
C#设计模式之12——享元模式
享元模式用于避免在大量非常相似的类方面的开销。在编程的时候可能会遇到需要生成大量的很小的用于表示数据的类实例。如果能意识到除了少数的几个参数之外,实例基本上都是相同的这一特性,就可以极大的降低需要实例化的不同类的数据。如果可以把这些参数变量移动到类的外部,并把他们作为方法调用参数传递到类实例中,就可以通过共享实例的方式来大大的减少单独实例的数目。享元模式中,内部数据确定了实例的唯一性,外部数据原创 2012-02-27 14:32:07 · 2801 阅读 · 0 评论 -
Android 人脸特征点检测(主动形状模型) ASM Demo (Active Shape Model on Android)
目前Android平台上进行人脸特征识别非常火爆,本人研究生期间一直从事人脸特征的处理,所以曾经用过一段ASM(主动形状模型)提取人脸基础特征点,所以这里采用JNI的方式将ASM在Android平台上进行了实现,同时在本应用实例中,给出了几个其他的图像处理的示例。由于ASM (主动形状模型,Active Shape Model)的核心算法比较复杂,所以这里不进行算法介绍,我之前写过一篇详细的算法介绍原创 2015-07-23 17:54:00 · 6619 阅读 · 5 评论