C#设计模式.pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《C#设计模式.pdf》由会员分享,可在线阅读,更多相关《C#设计模式.pdf(220页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C#设计模式(1).4一、C#面向对象程序设计复习.5二、设计模式举例.5三、先有鸡还是先有蛋?.7四、大瓶子套小瓶子还是小瓶子套大瓶子?.8五、.n e t本 质.9C#设计模式(2).1 1一、开放一封闭 原则(OCP).12二、里氏代换原则(LSP).12C#设计模式(3).19三、依赖倒置原则(DIP).19四、接口隔离原则(ISP).20五、合成/聚合复用原则(CARP).21六、迪米特法则(LoD).22C#设计模式(4)Sim pie Factory Pattern.24一、简单工厂(Simple Factory)模式.24二、Sim pie Factory模式角色与结构:.24
2、三、程序举例:.25四、Sim pie Factory 模式演化.27五、优点与缺点:.29C#设计模式(5)Factory Method Pattern.30一、工厂方法(Factory Method)模式.30二、Factory M ethod模式角色与结构:.30三、程序举例:.31四、工厂方法模式与简单工厂模式.33五、Factory Method 模式演化.34六、Factory Method模式与其它模式的关系.35七、另外一个例子.35C#设计模式(6)Abstract Factory Pattern.38一、抽象工厂(Abstract F actory)模式.38二、Abstr
3、act Factory 模式的结构:.39三、程序举例:.41四、在什么情形下使用抽象工厂模式:.44五、抽象工厂的起源.45六、Abstract Factory模式在实际系统中的实现.46七、开放一封闭 原则.50C#设计模式(7)Singleton Pattern.50一、单 例(Singleton)模式.50二、Singleton模式的结构:.51三、程序举例:.51四、在什么情形下使用单例模式:.52五、Singleton模式在实际系统中的实现.53六、C#中的Singleton模式.55C#设计模式(8)Builder Pattern.57一、建 造 者(B u ild e r)模式
4、.57二、B u ild e r模式的结构:.58三、程序举例:.58四、建造者模式的活动序列:.62五、建造者模式的实现:.62六、建造者模式的演化.68七、在什么情况下使用建造者模式.69C#设计模式(9)-P ro to ty p e P a tte rn.70一、原 型(P ro to ty p e)模式.70二、P ro to ty p e 模式的结构:.71三、程序举例:.71四、带 P rototype M anag er的原型模式.73五、浅拷贝与深拷贝.77六、P ro to ty p e 模式的优点与缺点.79C#设计模式(1 0)Adapter P a tte rn.80
5、一、适 配 器(A d a p te r)模式.80二、类的A d a p te r模式的结构:.81三、类的A d a p te r模式示意性实现:.81四、对象的A d a p te r模式的结构:.83五、对象的A d a p te r模式示意性实现:.84六、在什么情况下使用适配器模式.85七、一个实际应用A d a p te r模式的例子.85八、关于A d a p te r模式的讨论.87C#设计模式(1 1 )Com posite P a tte rn.88一、合 成(Com p o site)模式.88二、合成模式概述.88三、安全式的合成模式的结构.89四、安全式的合成模式实
6、现.90五、透明式的合成模式结构.93六、透明式的合成模式实现.94七、使用合成模式时考虑的几个问题.97八、和尚的故事.97九、一 1V实际应用Com p o s ite 模式的例子.98C#设计模式(1 2)Decorator P a tte rn.101一、装 饰(D ecorator)模式.101二、装饰模式的结构.101三、装饰模式示例性代码.102四、装饰模式应当在什么情况下使用.105五、装饰模式实际应用的例子.106六、使用装饰模式的优点和缺点.110七、模式实现的讨论.110八、透明性的要求.111九、装饰模式在.N E T中的应用.112C#设计模式(1 3)Proxy P
7、 a ttern.113一、代 理(P r o x y)模式.113二、代理的种类.114三、远程代理的例子.114四、代理模式的结构.115五、代理模式示例性代码.115六、高老庄悟空降八戒.117七、不同类型的代理模式.118八、代理模式实际应用的例子.119设计模式(1 4)F ly w e ig h t P a tte rn.122、享 元(Flyw e ig h t)模式.122二、单纯享元模式的结构.122三、单纯享元模式的示意性源代码.123四、复合享元模式的结构.125五、一个咖啡摊的例子.127六、咖啡屋的例子.130七、享元模式应当在什么情况下使用.133八、享元模式的优点
8、和缺点.133设计模式(1 5)-F a c a d e P a tte rn.134一、门 面(F a c a d e)模式.134二、门面模式的结构.134三、门面模式的实现.135四、在什么情况下使用门面模式.135五、一个例子.136六、使用门面模式的设计.140设计模式(1 6)B rid g e P a tte rn.144一、桥 梁(B r id g e)模式.144二、桥梁模式的结构.145三、桥梁模式的示意性源代码.146四、调制解调器问题.149五、另外一个实际应用B rid g e模式的例子.153六、在什么情况下应当使用桥梁模式.158设计模式(1 7)C hain o
9、f R e s p o n s ib ility P a tte rn.158一、职 责 链(C hain of R e s p o n s ib ility)模式.160二、责任链模式的结构.160三、责任链模式的示意性源代码.160四、纯的与不纯的责任链模式.163五、责任链模式的实际应用案例.163六、责任链模式的实现.168设计模式(1 8)Com m and P a tte rn.168一、命 令(Com m and)模式.168二、命令模式的结构.168三、命令模式的示意性源代码.169四、玉帝传美猴王上天.172五、命令模式的实现.172六、命令模式的实际应用案例.173七、在什
10、么情况下应当使用命令模式.177八、使用命令模式的优点和缺点.178设计模式(1 9)O b s e rv e r P a tte rn.178一、观 察 者(O b s e r v e r)模式.178二、观察者模式的结构.179三、观察者模式的示意性源代码.180四、C#中的 D e le g a te 与 E v e n t.183五、一个实际应用观察者模式的例子.187六、观察者模式的优缺点.191设计模式(2 0)-V is ito r P a tte rn.192一、访 问 者(V is ito r)模式.192二、访问者模式的结构.193三、示意性源代码.194四、一个实际应用V
11、 is ito r模式的例子.198五、在什么情况下应当使用访问者模式.202六、使用访问者模式的优点和缺点.203设计模式(21)Tem p la te M e th o d P a tte rn.204一、模板方法(T e m p la te M e th o d)模 式.204二、模版方法模式的结构.204三、模板方法模式的示意性代码.205四、继承作为复用的工具.207五、一个实际应用模板方法的例子.208六、模版方法模式中的方法.210七、重构的原则.211设计模式(2 2)S tra te g y P a tte rn.211一、策 略(S tr a te g y)模式.211二、
12、策略模式的结构.212三、示意性源代码.212四、何时使用何种具体策略角色.215五、一个实际应用策略模式的例子.215六、在什么情况下应当使用策略模式.218七、策略模式的优点和缺点.218八、其它.219C#设计模式(1)课本:0#设计模式,电子工业出版社,ISBN 7-5053-8979-30 3 3元含光盘。课程内容:设计模式来源:亚历山大的建筑模式、Gamma等 人(1995)创作的Design Patterns:Elements ofReusable S oftw are.这本书通常被称作Gang of Four或G oF,开创性的创造了 设计模式。也有人说 三十六计 就是 模式。
13、一、C#面向对象程序设计复习点击 http:/ 下载,内容包括:字段与属性.cs属性、方法作用范围.CS-加到一百.CS使用接口排序(2).CS使用接口排序(1).C S求质数.cs冒泡法排序.cs九九表.cs静态与非静态.cs构造函数.cs方法重载.cs多态性.cs递归求阶乘.cs打印三角形.cs传值调用与引用调用.cs二、设计模式举例在设计模式中有一种模式叫Builder模式,其原理如下:我们可以将Builder理解成电饭锅,给这个Builder放进去米和水,经过Builder的 Build后,我们就可以取出香喷喷的米饭了。C#中有一个类叫StringBuilder,输入必要的信息后,就可
14、以取出对应的String。其使用方法如下:using System;using System.Text;class Exam0Spublic static void Main()白 由(StringBuilder sb=new StringBuilder();sb.Append(a,2);sb.Append(b,3);sb.Append(c,4);I Console.WriteLine(sb.ToStringO);打印出 aabbbccccI sb.Remove(0,sb.Length);清除sb 中的所有信息卜 L)程序执行结果为:aabbbcccc请使用StringBuilder对以下打印
15、三角型的程序进行改写,写出新程序。using System;public class Exam日 叫public static void Main()白 由(I Console.Write(”请输入行数:“);int lines=int.Parse(Console.ReadLine();I Con sole.WriteLine(n);I for(int i=1;i=lines;i+)均由for(int k=1;k=lines-i;k+)I Console.Write(M);I for(int j=1;j=i*2-1;j+)I Console.Write(u*);I Console.WriteL
16、ine(,M,);卜)卜 L答:using System;using System.Text;class Exam日 期public static void Main()附 I Console.Write(请输入行数:);int lines=int.Parse(Console.ReadLine();I Console.WriteLine();IStringBuilder sb=new StringBuilder();Ifor(int i=1;i=r.getWidth()白 由(r.setWidth(r.getWidth()+1);)Rectangle日H acs冰-heightJong-wid
17、thJong日M a fx ygetHeightdonggetWidthdongsetHeight:void+setWidlh:voidASmartTest日Me 6adsresize:voidSquare0 fqg-sideJonggetHeightdonggetS ide Jong*getWidth:longsetHeight:void*setSide:void+setWidlh:void在执行SmartTest的resize方法时,如果传入的是长方形对象,当高度大于宽度时;会自动增加宽度直到超出高度。但是如果传入的是正方形对象,则会陷入死循环。代码重构public interface Q
18、uadrangle0S(I public long getWidth();public long getHeight();public class Rectangle:Quadrangle日 刊 private long width;private long height;Ipublic void setWidth(long width)心由(this.width=width;public long getWidth()的I return this.width;卜)public void setHeight(long height)白由this.height=height;卜)public l
19、ong getHeight()白由(return this.height;public class Square:Quadrangle0 E lprivate long side;Ipublic void setSide(long side)中由this.side=side;public long getSide()return side;public long getWidth()附return getSide();public long getHeight()钟return getSide();卜)LinterfaceQuadranglegetWidth:longgetHeight:lon
20、g-P rotfertnryASmartTest F tciO fi口 M ethods+resize:voidSquare 区 疫-sidelong*getHeight:long*getS ide Jong+getWidth:longsetSide:voidPmiienuRectangleEJ FQ N S-height:long-width longQ M ethods+getHeight:long+getWidth:long+setHeight:void+setWidth:void P on)c:ticsC#设计模式(3)三、依赖倒置原则(DIP)依赖倒置(Dependence Inve
21、rsion Principle)原则讲的是:要依赖于抽象,不要依赖于具体。简单的说,依赖倒置原则要求客户端依赖于抽象耦合。原则表述:抽象不应当依赖于细节;细节应当依赖于抽象;要针对接口编程,不针对实现编程。反面例子:ToggkSwitch-liglil.Light+Tog 以)缺点:耦合太紧密,Light发生变化将影响ToggleSwitch。解决办法一:将Light作成Abstract,然后具体类继承自Light.优点:Toggleswitch依赖于抽象类Light,具有更高的稳定性,而BulbLight与TubeLight继承自Light,可以根据开放一封闭原则进行扩展。只要Light不发
22、生变化,BulbLight与TubeLight的变化就不会波及ToggleSwitch。缺点:如果用Toggleswitch控制一台电视就很困难了。总不能让TV继承自Light吧。解决方法二:IIJ ISwitchabk LI y-TumOnO V II 卜 TumOfff)I IlojgjIcSwitch-switchable:ISwitchablc4-ToggleO优点:更为通用、更为稳定。结论:使用传统过程化程序设计所创建的依赖关系,策略依赖于细节,这是糟糕的,因为策略受到细门改变的影响。依赖倒置原则使细节和策略都依赖于抽象,抽象的稳定性决定了系统的稳定性。四、接口隔离原则(ISP)接口
23、隔离原则(Interface Segregation Principle)讲的是:使用多个专门的接口比使用单一的总接口总要好。换而言之,从一个客户类的角度来讲:一个类对另外一个类的依赖性应当是建立在最小接口上的。过于臃肿的接口是对接口的污染。不应该强迫客户依赖于它们不用的方法。My object-oriented umbrella(摘自 Design Patterns Explained)Let me tell you about my great umbrella.It is large enough to get into!In fact,threeor four other people
24、 can get in it with me.While we are in it,staying out of the rain,I can move it from one place to another.It has a stereo system to keep meentertained while I stay dry.Amazingly enough,it can also condition the air to makeit warmer or colder.It is one cool umbrella.My umbrella is convenient.It sits
25、there waiting for me.It has wheels on it so that Ido not have to carry it around.I dont even have to push it because it can propelitself.Sometimes,I will open the top of my umbrella to let in the sun.(Why I amusing my umbrella when it is sunny outside is beyond me!)In Seattle,there are hundreds of t
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C# 设计 模式
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内