欢迎来到天天文库
浏览记录
ID:51469506
大小:252.50 KB
页数:32页
时间:2020-03-25
《UML_类图_带源码_23种设计模式.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、1.DoFactory.GangOfFour.Abstract.StructuralAbstractFactory:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:如何创建及如何向客户端提供。CodeusingSystem;namespaceDoFactory.GangOfFour.Abstract.Structural{//////MainAppstartupclas
2、sforStructural///AbstractFactoryDesignPattern.///classMainApp{//////Entrypointintoconsoleapplication.///publicstaticvoidMain(){//Abstractfactory#1AbstractFactoryfactory1=newConcreteFactory1();Clientclient1=newClient(factory1);client1.Run();//Abstractfacto
3、ry#2AbstractFactoryfactory2=newConcreteFactory2();Clientclient2=newClient(factory2);client2.Run();//WaitforuserinputConsole.Read();}}//"AbstractFactory"abstractclassAbstractFactory{publicabstractAbstractProductACreateProductA();publicabstractAbstractProductBCreateProductB();}//"Concr
4、eteFactory1"classConcreteFactory1:AbstractFactory{publicoverrideAbstractProductACreateProductA(){returnnewProductA1();}publicoverrideAbstractProductBCreateProductB(){returnnewProductB1();}}//"ConcreteFactory2"classConcreteFactory2:AbstractFactory{publicoverrideAbstractProductACreateP
5、roductA(){returnnewProductA2();}publicoverrideAbstractProductBCreateProductB(){returnnewProductB2();}}//"AbstractProductA"abstractclassAbstractProductA{}//"AbstractProductB"abstractclassAbstractProductB{publicabstractvoidInteract(AbstractProductAa);}//"ProductA1"classProductA1:Abstra
6、ctProductA{}//"ProductB1"classProductB1:AbstractProductB{publicoverridevoidInteract(AbstractProductAa){Console.WriteLine(this.GetType().Name+"interactswith"+a.GetType().Name);}}//"ProductA2"classProductA2:AbstractProductA{}//"ProductB2"classProductB2:AbstractProductB{publicoverridevo
7、idInteract(AbstractProductAa){Console.WriteLine(this.GetType().Name+"interactswith"+a.GetType().Name);}}//"Client"-theinteractionenvironmentoftheproductsclassClient{privateAbstractProductAAbstractProductA;privateAbstractProductBAbstractProductB;//ConstructorpublicClient(AbstractFacto
8、ryfactory){A
此文档下载收益归作者所有