UML_类图_带源码_23种设计模式.doc
《UML_类图_带源码_23种设计模式.doc》由会员分享,可在线阅读,更多相关《UML_类图_带源码_23种设计模式.doc(32页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1.DoFactory.GangOfFour.Abstract.Structural Abstract Factory:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:如何创建及如何向客户端提供。Codeusing System;namespace DoFactory.GangOfFour.Abstract.Structural / / MainApp startup class for Structural / A
2、bstract Factory Design Pattern. / class MainApp / / Entry point into console application. / public static void Main() / Abstract factory #1 AbstractFactory factory1 = new ConcreteFactory1(); Client client1 = new Client(factory1); client1.Run(); / Abstract factory #2 AbstractFactory factory2 = new Co
3、ncreteFactory2(); Client client2 = new Client(factory2); client2.Run(); / Wait for user input Console.Read(); / AbstractFactory abstract class AbstractFactory public abstract AbstractProductA CreateProductA(); public abstract AbstractProductB CreateProductB(); / ConcreteFactory1 class ConcreteFactor
4、y1 : AbstractFactory public override AbstractProductA CreateProductA() return new ProductA1(); public override AbstractProductB CreateProductB() return new ProductB1(); / ConcreteFactory2 class ConcreteFactory2 : AbstractFactory public override AbstractProductA CreateProductA() return new ProductA2(
5、); public override AbstractProductB CreateProductB() return new ProductB2(); / AbstractProductA abstract class AbstractProductA / AbstractProductB abstract class AbstractProductB public abstract void Interact(AbstractProductA a); / ProductA1 class ProductA1 : AbstractProductA / ProductB1 class Produ
6、ctB1 : AbstractProductB public override void Interact(AbstractProductA a) Console.WriteLine(this.GetType().Name + interacts with + a.GetType().Name); / ProductA2 class ProductA2 : AbstractProductA / ProductB2 class ProductB2 : AbstractProductB public override void Interact(AbstractProductA a) Consol
7、e.WriteLine(this.GetType().Name + interacts with + a.GetType().Name); / Client - the interaction environment of the products class Client private AbstractProductA AbstractProductA; private AbstractProductB AbstractProductB; / Constructor public Client(AbstractFactory factory) AbstractProductB = fact
8、ory.CreateProductB(); AbstractProductA = factory.CreateProductA(); public void Run() AbstractProductB.Interact(AbstractProductA); 2.DoFactory.GangOfFour.Adapter.Structural Adapter:将一个类的接口转换成客户希望的另一个接口,使得原来由于接口不兼容而不能一起工作的那些类可以一起工作。适配器(变压器)模式:把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口原因不匹配而无法一起工作的两个类能够一起工作。适配类可以
9、根据参数返还一个合适的实例给客户端。using System;namespace DoFactory.GangOfFour.Adapter.Structural / / MainApp startup class for Structural / Adapter Design Pattern. / class MainApp / / Entry point into console application. / static void Main() / Create adapter and place a request Target target = new Adapter(); targe
10、t.Request(); / Wait for user Console.Read(); / Target class Target public virtual void Request() Console.WriteLine(Called Target Request(); / Adapter class Adapter : Target private Adaptee adaptee = new Adaptee(); public override void Request() / Possibly do some other work / and then call SpecificR
11、equest adaptee.SpecificRequest(); / Adaptee class Adaptee public void SpecificRequest() Console.WriteLine(Called SpecificRequest(); 6.DoFactory.GangOfFour.Command.StructuralCommand:将一个请求封装为一个对象,从而使你可以用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可以取消的操作。命令模式:命令模式把一个请求或者操作封装到一个对象中。命令模式把发出命令的责任和执行命令的责任分割开,委派给不同的对象。
12、命令模式允许请求的一方和发送的一方独立开来,使得请求的一方不必知道接收请求的一方的接口,更不必知道请求是怎么被接收,以及操作是否执行,何时被执行以及是怎么被执行的。系统支持命令的撤消。using System;namespace DoFactory.GangOfFour.Command.Structural / / MainApp startup class for Structural / Command Design Pattern. / class MainApp / / Entry point into console application. / static void Main()
13、 / Create receiver, command, and invoker Receiver receiver = new Receiver(); Command command = new ConcreteCommand(receiver); Invoker invoker = new Invoker(); / Set and execute command invoker.SetCommand(command); invoker.ExecuteCommand(); / Wait for user Console.Read(); / Command abstract class Com
14、mand protected Receiver receiver; / Constructor public Command(Receiver receiver) this.receiver = receiver; public abstract void Execute(); / ConcreteCommand class ConcreteCommand : Command / Constructor public ConcreteCommand(Receiver receiver) : base(receiver) public override void Execute() receiv
15、er.Action(); / Receiver class Receiver public void Action() Console.WriteLine(Called Receiver.Action(); / Invoker class Invoker private Command command; public void SetCommand(Command command) mand = command; public void ExecuteCommand() command.Execute(); 7.DoFactory.GangOfFour.Composite.Structural
16、Composite:将对象组合成树形结构以表示“部分整体”的层次结构。Composite使得客户对单个对象和复合对象的使用具有一致性。 合成模式:合成模式将对象组织到树结构中,可以用来描述整体与部分的关系。合成模式就是一个处理对象的树结构的模式。合成模式把部分与整体的关系用树结构表示出来。合成模式使得客户端把一个个单独的成分对象和由他们复合而成的合成对象同等看待。 Codeusing System;using System.Collections;namespace DoFactory.GangOfFour.Composite.Structural / / MainApp startup cl
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- UML_ 类图 源码 _23 设计 模式
限制150内