《23种设计模式_UML_类图及对应示例代码》由会员分享,可在线阅读,更多相关《23种设计模式_UML_类图及对应示例代码(45页珍藏版)》请在金锄头文库上搜索。
1、. 23种设计模式 UML 类图及对应例如代码 (一)收藏 Abstract Factory:提供一个创立一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 工厂模式:客户类和工厂类分开。消费者任何时候需要*种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:如何创立及如何向客户端提供。usingSystem;namespaceDoFactory.GangOfFour.Abstract.Structural/MainAppstartupclassforStructural/AbstractFactoryDesignPattern./
2、classMainApp/Entrypointintoconsoleapplication./publicstaticvoidMain()/Abstractfactory*1AbstractFactoryfactory1=newConcreteFactory1();Clientclient1=newClient(factory1);client1.Run();/Abstractfactory*2AbstractFactoryfactory2=newConcreteFactory2();Clientclient2=newClient(factory2);client2.Run();/Waitfo
3、ruserinputConsole.Read();/AbstractFactoryabstractclassAbstractFactorypublicabstractAbstractProductACreateProductA();publicabstractAbstractProductBCreateProductB();/ConcreteFactory1classConcreteFactory1:AbstractFactorypublicoverrideAbstractProductACreateProductA()returnnewProductA1();publicoverrideAb
4、stractProductBCreateProductB()returnnewProductB1();/ConcreteFactory2classConcreteFactory2:AbstractFactorypublicoverrideAbstractProductACreateProductA()returnnewProductA2();publicoverrideAbstractProductBCreateProductB()returnnewProductB2();/AbstractProductAabstractclassAbstractProductA/AbstractProduc
5、tBabstractclassAbstractProductBpublicabstractvoidInteract(AbstractProductAa);/ProductA1classProductA1:AbstractProductA/ProductB1classProductB1:AbstractProductBpublicoverridevoidInteract(AbstractProductAa)Console.WriteLine(this.GetType().Name+interactswith+a.GetType().Name);/ProductA2classProductA2:A
6、bstractProductA/ProductB2classProductB2:AbstractProductBpublicoverridevoidInteract(AbstractProductAa)Console.WriteLine(this.GetType().Name+interactswith+a.GetType().Name);/Client-theinteractionenvironmentoftheproductsclassClientprivateAbstractProductAAbstractProductA;privateAbstractProductBAbstractP
7、roductB;/ConstructorpublicClient(AbstractFactoryfactory)AbstractProductB=factory.CreateProductB();AbstractProductA=factory.CreateProductA();publicvoidRun()AbstractProductB.Interact(AbstractProductA); Adapter:将一个类的接口转换成客户希望的另一个接口,使得原来由于接口不兼容而不能一起工作的那些类可以一起工作。适配器(变压器)模式:把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口
8、原因不匹配而无法一起工作的两个类能够一起工作。适配类可以根据参数返还一个适宜的实例给客户端。usingSystem;namespaceDoFactory.GangOfFour.Adapter.Structural/MainAppstartupclassforStructural/AdapterDesignPattern./classMainApp/Entrypointintoconsoleapplication./staticvoidMain()/CreateadapterandplacearequestTargettarget=newAdapter();target.Request();/W
9、aitforuserConsole.Read();/TargetclassTargetpublicvirtualvoidRequest()Console.WriteLine(CalledTargetRequest();/AdapterclassAdapter:TargetprivateAdapteeadaptee=newAdaptee();publicoverridevoidRequest()/Possiblydosomeotherwork/andthencallSpecificRequestadaptee.SpecificRequest();/AdapteeclassAdapteepubli
10、cvoidSpecificRequest()Console.WriteLine(CalledSpecificRequest(); Bridge:将抽象局部与它的实现局部别离,使之可以独立变化。桥梁模式:将抽象化与实现化脱耦,使得二者可以独立的变化,也就是说将他们之间的强关联变成弱关联,也就是指在一个软件系统的抽象化和实现化之间使用组合/聚合关系而不是继承关系,从而使两者可以独立的变化。usingSystem;namespaceDoFactory.GangOfFour.Bridge.Structural/MainAppstartupclassforStructural/BridgeDesignPattern./classMainApp/Entrypointintoconsoleapplication./staticvoidMain()Abstractionab