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