1、C#设计模式(1 ) .4一、 C# 面向对象程序设计复习 .5二、 设计模式举例 .5三、 先有鸡还是先有蛋? .7四、 大瓶子套小瓶子还是小瓶子套大瓶子? .8五、 .net 本质 .9C#设计模式(2 ) .11一、 “开放封闭 “原则 (OCP) .12二、 里氏代换原则(LSP) .12C#设计模式(3 ) .19三、 依赖倒置原则(DIP) .19四、 接口隔离原则(ISP ) .20五、 合成 /聚合复用原则(CARP) .21六、 迪米特法则(LoD) .22C#设计模式(4 )Simple Factory Pattern.24一、 简单工厂(Simple Factory)模式
2、 .24二、 Simple Factory 模式角色与结构: .24三、 程序举例: .25四、 Simple Factory 模式演化 .27五、 优点与缺点: .29C#设计模式(5 )Factory Method Pattern.30一、 工厂方法(Factory Method)模式 .30二、 Factory Method 模式角色与结构: .30三、 程序举例: .31四、 工厂方法模式与简单工厂模式 .33五、 Factory Method 模式演化 .34六、 Factory Method 模式与其它模式的关系 .35七、 另外一个例子 .35C#设计模式(6 )Abstract
3、 Factory Pattern .38一、 抽象工厂(Abstract Factory)模式 .38二、 Abstract Factory 模式的结构: .39三、 程序举例: .41四、 在什么情形下使用抽象工厂模式: .44五、 抽象工厂的起源 .45六、 Abstract Factory 模式在实际系统中的实现 .46七、 “开放封闭“原则 .50C#设计模式(7 )Singleton Pattern.50一、 单例(Singleton)模式 .50二、 Singleton 模式的结构: .51三、 程序举例: .51四、 在什么情形下使用单例模式: .52五、 Singleton 模
4、式在实际系统中的实现 .53六、 C#中的 Singleton 模式 .55C#设计模式(8 )Builder Pattern .57一、 建造者(Builder)模式 .57二、 Builder 模式的结构: .58三、 程序举例: .58四、 建造者模式的活动序列: .62五、 建造者模式的实现: .62六、 建造者模式的演化 .68七、 在什么情况下使用建造者模式 .69C#设计模式(9 )Prototype Pattern .70一、 原型(Prototype )模式 .70二、 Prototype 模式的结构: .71三、 程序举例: .71四、 带 Prototype Manage
5、r 的原型模式 .73五、 浅拷贝与深拷贝 .77六、 Prototype 模式的优点与缺点 .79C#设计模式(10 )Adapter Pattern.80一、 适配器(Adapter)模式 .80二、 类的 Adapter 模式的结构: .81三、 类的 Adapter 模式示意性实现: .81四、 对象的 Adapter 模式的结构: .83五、 对象的 Adapter 模式示意性实现: .84六、 在什么情况下使用适配器模式 .85七、 一个实际应用 Adapter 模式的例子 .85八、 关于 Adapter 模式的讨论 .87C#设计模式(11 )Composite Pattern
6、.88一、 合成(Composite)模式 .88二、 合成模式概述 .88三、 安全式的合成模式的结构 .90四、 安全式的合成模式实现 .91五、 透明式的合成模式结构 .93六、 透明式的合成模式实现 .94七、 使用合成模式时考虑的几个问题 .97八、 和尚的故事 .98九、 一个实际应用 Composite 模式的例子 .98C#设计模式(12 )Decorator Pattern .101一、 装饰(Decorator )模式 .101二、 装饰模式的结构 .102三、 装饰模式示例性代码 .103四、 装饰模式应当在什么情况下使用 .106五、 装饰模式实际应用的例子 .106六
7、、 使用装饰模式的优点和缺点 .110七、 模式实现的讨论 .111八、 透明性的要求 .111九、 装饰模式在.NET 中的应用 .112C#设计模式(13 )Proxy Pattern.113一、 代理(Proxy )模式 .113二、 代理的种类 .114三、 远程代理的例子 .114四、 代理模式的结构 .115五、 代理模式示例性代码 .115六、 高老庄悟空降八戒 .117七、 不同类型的代理模式 .118八、 代理模式实际应用的例子 .119设计模式(14)Flyweight Pattern.122一、 享元(Flyweight)模式 .122二、 单纯享元模式的结构 .122三
8、、 单纯享元模式的示意性源代码 .123四、 复合享元模式的结构 .125五、 一个咖啡摊的例子 .127六、 咖啡屋的例子 .130七、 享元模式应当在什么情况下使用 .133八、 享元模式的优点和缺点 .134设计模式(15)Facade Pattern.134一、 门面(Facade)模式 .134二、 门面模式的结构 .134三、 门面模式的实现 .135四、 在什么情况下使用门面模式 .135五、 一个例子 .136六、 使用门面模式的设计 .140设计模式(16)Bridge Pattern .144一、 桥梁(Bridge)模式 .144二、 桥梁模式的结构 .145三、 桥梁模
9、式的示意性源代码 .146四、 调制解调器问题 .149五、 另外一个实际应用 Bridge 模式的例子 .153六、 在什么情况下应当使用桥梁模式 .158设计模式(17)Chain of Responsibility Pattern.158一、 职责链(Chain of Responsibility)模式 .160二、 责任链模式的结构 .160三、 责任链模式的示意性源代码 .160四、 纯的与不纯的责任链模式 .163五、 责任链模式的实际应用案例 .163六、 责任链模式的实现 .168设计模式(18)Command Pattern.168一、 命令(Command)模式 .168二
10、、 命令模式的结构 .168三、 命令模式的示意性源代码 .169四、 玉帝传美猴王上天 .172五、 命令模式的实现 .172六、 命令模式的实际应用案例 .173七、 在什么情况下应当使用命令模式 .177八、 使用命令模式的优点和缺点 .178设计模式(19)Observer Pattern.178一、 观察者(Observer)模式 .178二、 观察者模式的结构 .179三、 观察者模式的示意性源代码 .180四、 C#中的 Delegate 与 Event .183五、 一个实际应用观察者模式的例子 .187六、 观察者模式的优缺点 .191设计模式(20)Visitor Patt
11、ern .192一、 访问者(Visitor )模式 .192二、 访问者模式的结构 .193三、 示意性源代码 .194四、 一个实际应用 Visitor 模式的例子 .198五、 在什么情况下应当使用访问者模式 .202六、 使用访问者模式的优点和缺点 .203设计模式(21)Template Method Pattern.204一、 模板方法(Template Method)模式 .204二、 模版方法模式的结构 .204三、 模板方法模式的示意性代码 .205四、 继承作为复用的工具 .207五、 一个实际应用模板方法的例子 .208六、 模版方法模式中的方法 .210七、 重构的原则 .211设计模式(22)Strategy Pattern.211一、 策略(Strategy)模式 .211二、 策略模式的结构 .212三、 示意性源代码 .212四、 何时使用何种具体策略角色 .215五、 一个实际应用策略模式的例子 .215六、 在什么情况下应当使用策略模式 .