c所有设计模式及源代码_第1页
c所有设计模式及源代码_第2页
c所有设计模式及源代码_第3页
c所有设计模式及源代码_第4页
c所有设计模式及源代码_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本文格式为Word版,下载可任意编辑——c所有设计模式及源代码C#设计模式总结

各位亲们,在网上很难找到所有设计模式的说明及源代码,特别C#更是比较少,本人最近花了点时间罗列了二十多种设计模式,希望能对写程序朋友特别需要软考的朋友有所帮助,假使有需要源代码和类图的朋友,请到温尔保免费索取,以便我们进行探讨和您对此文档的指正,当然别忘了关顾我的小店哦,感谢!由于能力有限,对有些模式理解不正确,敬请谅解和指正,愿我们一同进步,一同学习,本人的是1070837561。一、简单工厂模式

1.

概念

从设计模式的类型上来说,简单工厂模式是属于创立型模式,又叫做静态工厂方法(StaticFactoryMethod)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创立出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特别实现。2.

类图

调用者皮鞋+皮鞋信息():string皮鞋工厂+生产皮鞋():皮鞋工厂男皮鞋+皮鞋信息:string女皮鞋+皮鞋信息():string

3.a)b)c)4.

使用场景

工厂类负责创立的对象比较少;

客户只知道传入工厂类的参数,对于如何创立对象(规律)不关心;

由于简单工厂很简单违反高内聚责任分派原则,因此一般只在很简单的状况下应用。代码

上温尔保免费索取所有模式的源代码。

二、工厂方法模式

1、概念

工厂方法(FactoryMethod)模式的意义是定义一个创立产品对象的工厂接口,将实际创立工作推迟到子类当中。核心工厂类不再负责产品的创立,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必需实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的状况下引进新的产品。2、类图

调用者抽象工厂+生产皮鞋():皮鞋皮鞋+皮鞋信息():string皮鞋工厂+生产皮鞋():皮鞋男皮鞋+皮鞋信息():string女皮鞋+皮鞋信息():string

3、使用场景

a)b)

调用者明白地知道应当使用哪个具体工厂服务,实例化该具体工厂,生产出具体的产品来;

只是需要一种产品,而不想知道也不需要知道毕竟是哪个工厂为生产的,即最终选用哪个具体工厂的决定权在生产者一方,它们根据当前系统的状况来实例化一个具体的工厂返回给使用者,而这个决策过程这对于使用者来说是透明的。

4、代码

上温尔保免费索取所有模式的源代码。

三、单例模式

1、概念

单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特别类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而便利对实例个数的控制并俭约系统资源。假使希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。2、类图

皮鞋工厂-_皮鞋工厂单例+皮鞋工厂单例()if(_皮鞋工厂单例==null){_皮鞋工厂单例=new皮鞋工厂();}return_皮鞋工厂单例;

3、使用场景

a)b)4、代码

上温尔保免费索取所有模式的源代码。

四、构建模式

1、概念

构建模式将一个繁杂对象的构建与它的表示分开,使得同样的构建过程可以创立不同的表示,构建模式是一步步创立一个繁杂的对象,它允许用户只通过指定繁杂对象的类型和内容就可以构建

资源共享的状况下,避免由于资源操作时导致的性能或损耗等;控制资源的状况下,便利资源之间的相互通信。

它们,用户不知道内部的具体构建细节。2、类图

>皮鞋制作接口皮鞋制作指挥-_皮鞋制作接口+指挥皮鞋制作()publicvoid指挥皮鞋制作(){_皮鞋制作接口.车包();_皮鞋制作接口.做包();_皮鞋制作接口.夹包();_皮鞋制作接口.包装();}男皮鞋制作实现-_男皮鞋+车包()+做包()+夹包()+包装()+获得皮鞋():皮鞋接口>皮鞋接口男皮鞋-已车包:bool-已做包:bool-已夹包:bool-已包装:bool3、使用场景

a)b)4、代码

上温尔保免费索取所有模式的源代码。

五、原型模式

1、概念

原型模式指定创立对象的种类,并且通过复制这些原型创立新的对象。原型模式允许一个对象再创立另一个可定制的对象,根本无须知道任何创立的细节。工作原理是:通过将一个原型对象传给那个要发动创立的对象,这个要发动创立的对象通过请求原型对象复制自己来实施创立过程。2、类图

皮鞋原型+Clone()调用者当创立繁杂对象的算法应当独立于该对象的组成部分以及它们的装配方式时;当构造过程必需允许被构造的对象有不同表示时。

皮鞋原型实现

3、使用场景

a)b)c)

类初始化需要消化十分多的资源,这个资源包括数据、硬件资源等;通过new产生一个对象需要十分繁琐的数据准备或访问权限;

原型模式很少单独出现,一般是和工厂方法模式一起出现,通过clone的方法创立一个对象,然后由工厂方法提供给调用者。

4、代码

上温尔保免费索取所有模式的源代码。

六、适配器模式

1、概念

适配器模式将一个接口转换成为客户想要的另一个接口,适配器模式使接口不兼容的那些类可以一起工作。2、类图

>皮鞋接口正品男鞋适配次品男鞋-_次品男鞋调用者次品男鞋

3、使用场景

a)b)4、代码

上温尔保免费索取所有模式的源代码。

七、合成模式

1、概念

合成模式组合多个对象形成树形结构以表示整体-部分的结构层次。合成模式对单个对象和合成对象的使用具有一致性。合成模式提供一个树结构中所有对象的统一接口,规范树中单独对象和合成对象的构建过程,合成模式更像一个数据结构。2、类图

系统需要使用现有的类,而现有类不符合当前系统的要求;

系统要建立一个可以重复使用的类,用来与彼此没有太大关联的类或者在将来要引用的类一起工作。

>皮鞋接口*1调用者一双皮鞋+获得皮鞋集合()皮鞋箱-皮鞋列表+add()+remove()+获得皮鞋集合()

3、使用场景

遇到对象组合的状况,同时也符合树结构。4、代码

上温尔保免费索取所有模式的源代码。

八、装饰模式

1、概念

装饰模式是在不必改变原类文件和使用继承的状况下,动态的扩展一个对象的功能。它是通过创立一个包装对象,也就是装饰来包裹真实的对象。就增加对象功能来说,装饰模式比生成子类实现更为灵活。2、类图

>皮鞋接口1抽象装饰皮鞋已有皮鞋+车包()1实现装饰皮鞋1实现装饰皮鞋2

3、使用场景

a)b)c)4、代码

上温尔保免费索取所有模式的源代码。

九、代理模式

1、概念

代理模式为其他对象提供一个代理或地方以控制对这个对象的访问。当客户向代理对象第一次提

想透明并且动态地给对象增加新的职责的时候;给对象增加的职责,在未来存在增加或减少可能;用继承扩展功能不太现实的状况下,应当考虑此模式。

>皮鞋接口11抽象生产方式+生产()女皮鞋男皮鞋生产方式1生产方式2

3、使用场景

a)b)c)4、代码

上温尔保免费索取所有模式的源代码。

十三、

策略模式

策略模式定义一系列的算法,将每一个算法封装起来,并让它们可以相互替换。策略模式让算法独立于使用它的客户而变化。2、类图

>皮鞋制作接口11制作策略-_皮鞋制作接口+制作()当一个对象有多个变化因素的时候,通过抽象这些变化因素,将依靠具体实现,修改为依靠抽象;

当某个变化因素在多个对象中共享时。我们可以抽象出这个变化因素,然后实现这些不同的变化因素;

当我们期望一个对象的多个变化因素可以动态的变化,而且不影响客户的程序的使用时。

1、概念

包装车包夹包做包

3、应用场景

a)b)c)

4、代码

上温尔保免费索取所有模式的源代码。

多个类只区别在表现行为不同,可以使用策略模式,在运行时动态选择具体要执行的行为;

需要在不可怜况下使用不同的策略(算法),或者策略还可能在未来用其它方式来实现;对客户隐蔽具体策略(算法)的实现细节,彼此完全独立。

十四、模板方法模式

模板方法模式定义一个操作中算法的骨架,以将一些步骤延缓到子类中实现。模板方法让子类重新定义一个算法的某些步骤而无须改变算法的结构。

1、概念

2、类图

抽象皮鞋-是否为女鞋+生产模板()调用者男皮鞋女皮鞋-是否为女鞋=true

3、使用场景

a)b)c)4、代码

上温尔保免费索取所有模式的源代码。

十五、

迭代器模式

迭代器模式提供一种方法可以访问聚合对象,而不用暴露这个对象的内部表示。迭代器模式是为容器而生。2、类图

皮鞋迭代实现>皮鞋接口*1>皮鞋迭代接口+remove()+first()+hasNext()+next()多个子类有公有的方法,并且规律基本一致时;

重要、繁杂的算法,可以把核心算法设计为模板方法,周边的相关细节功能则由各个子类实现;

重构时,模板方法模式是一个经常使用的模式,把一致的代码抽取到父类中,然后通过钩子函数(见“模板方法模式的扩展〞)约束其行为。

1、概念

男皮鞋女皮鞋>皮鞋容器接口调用者皮鞋容器实现-+迭代器()

3、使用场景

a)b)

访问一个聚合对象的内容而无须暴露它的内部表示。将聚合对象的访问与内部数据的存储分开,使得访问聚合对象时无须了解其内部实现细节;需要为一个聚合对象提供多种遍历方式;

c)4、代码

为遍历不同的聚合结构提供一个统一的接口,在该接口的实现类中为不同的聚合结构提供不同的遍历方式,而客户端可以一致性地操作该接口。

上温尔保免费索取所有模式的源代码。

十六、

责任链模式

责任链模式是面向对象中的一种软件设计模式,它包含了一些命令对象和一些处理对象,每个处理对象决定它能处理那些命令对象,它也知道应当把自己不能处理的命令对象交下一个处理对象,该模式还描述了往该链添加新的处理对象的方法。2、类图

11抽象皮鞋生产厂-规模更大继任者厂+是否能生产()调用者1、概念

规模大皮鞋厂规模中等皮鞋厂规模小皮鞋厂

3、使用场景

假使使用if?else?语句来组织一个责任链时感到力不从心,代码看上去很糟糕时,就可以使用责任链模式来进行重构。4、代码

上温尔保免费索取所有模式的源代码。

十七、

命令模式

命令模式将一个请求封装成一个对象,因此可以参数化多个客户的不同请求,将请求队列,记录请求日志,并且支持撤销操作。2、类图

调用者1、概念

皮鞋生产命令抽象-AsyCallBack-Handler-_接收者+生产()11皮鞋生产请求者-_生产命令+请求动作()+实际生产()皮鞋生产接收者抽象男皮鞋生产命令女皮鞋生产命令皮鞋生产接收者2皮鞋生产接收者1

3、使用场景

a)b)

使用命令模式作为\在面向对象系统中的替代。\讲的便是先将一个函数登记上,然后在以后调用此函数。

需要在不同的时间指定请求、将请求排队。一个命令对象和原先的请求发出者可以有不同的生命期。换言之,原先的请求发出者可能已经不在了,而命令对象本身依旧是活动的。这时命令的接收者可以是在本地,也可以在网络的另外一个地址。命令对象可以在串形化之后传送到另外一台机器上去。c)

系统需要支持命令的撤消(undo)。命令对象可以把状态存储起来,等到客户端需要撤销命令所产生的效果时,可以调用undo()方法,把命令所产生的效果撤销掉。命令对象还可以提供redo()方法,以供客户端在需要时,再重新实施命令效果。d)

假使一个系统要将系统中所有的数据更新到日志里,以便在系统崩溃时,可以根据日志里读回所有的数据更新命令,重新调用Execute()方法一条一条执行这些命令,从而恢复系统在崩溃前所做的数据更新。

4、代码

上温尔保免费索取所有模式的源代码。

十八、

备忘录模式

在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样就可以将该对象恢复到原先保存前的状态。2、类图

皮鞋生产状态备恢复器调用者+创立状态备录()+恢复状态()+获得状态()+设置状态()1*皮鞋生产状态备录器-_状态备录+获得状态备录()+保存状态备录()皮鞋生产状态备录-_生产状态+获得状态()+设置状态()1、概念

3、使用场景

a)b)4、代码

上温尔保免费索取所有模式的源代码。

十九、

状态模式

状态模式能够使一个对象的内在状态改变时允许改变其行为,是这个对象看起改变了其类。2、类图1、概念

需要保存一个对象在某一个时刻的状态或部分状态;

当系统功能比较繁杂,而且需要记录历史属性以便当需要时做恢复动作。

>皮鞋制作状态接口皮鞋-_制作状态+设置状态()+皮鞋制作()+改变状态()+皮鞋制作()包装制作状态车包制作状态夹包制作状态做包制作状态

3、使用场景

a)b)4、代码

上温尔保免费索取所有模式的源代码。

二十、

访问者模式

访问者模式说明一个操作执行于一个对象结构的成员中。访问者模式让我们定义一个类的新操作而无须改变它操作的这些成员。2、类图

调用者皮鞋工厂+清点皮鞋()1*皮鞋访问者抽象皮鞋抽象+获得访问者(男皮鞋皮鞋)()+获得访问者(女皮鞋皮鞋)()+清点应答(皮鞋访问者抽象访问者)()当一个对象的行为取决于它的状态,并且它必需在运行时刻根据状态改变它的行为时,就可以考虑使用状态模式来;

一个操作中含有巨大的分支结构,并且这些分支决定于对象的状态。

1、概念

名牌皮鞋访问者杂牌皮鞋访问者男皮鞋女皮鞋

3、应用场景

a)b)c)d)

一个对象结构包含好多类对象,它们有不同的接口,而你想对这些对象实施一些依靠于其具体类的操作。

需要对一个对象结构中的对象进行好多不同的并且不相关的操作,而你想避免让这些操作“污染〞这些对象的类。Visitor模式使得你可以将相关的操作集中起来定义在一个类中。当该对象结构被好多应用共享时,用Visitor模式让每个应用仅包含需要用到的操作。定义对象结构的类很少改变,但经常需要在此结构上定义新的操作。改变对象结构类需要重定义对所有访问者的接口,这可能需要很大的代价。假使对象结构类经常改变,那么可能还是在这些类中定义这些操作较好。

4、代码

二十一、解释器模式

1、概念

解释器模式是类的行为模式。给定一个语言之后,解释器模式可以定义出其文法的一种表示,并同时提供一个解释器。客户端可以使用这个解释器来解释这个语言中的句子。2、类图

调用者部门抽象21车包部门1夹包部门皮鞋2转达部门

3、使用场景

当有一个语言需要解释执行,并且你可将该语言中的句子表示为一个抽象语法树时,可使用解释器模式,如a+b-(a-b),可以对+,-,(,)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论