1 / 15
文档名称:

抽象工厂模式.docx

格式:docx   大小:623KB   页数:15页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

抽象工厂模式.docx

上传人:木易东 2020/2/21 文件大小:623 KB

下载得到文件列表

抽象工厂模式.docx

文档介绍

文档介绍:Net设计模式实例之抽象工厂模式(AbstractFactoryPattern)一、抽象工厂模式简介(BrefIntroduction)抽象工厂模式(AbstractFactoryPattern),提供一个创建一系列相关或者相互依赖对象的接口,而无需制定他们的具体类。优点是:易于交换产品系列,由于具体工厂类在一个应该用中只需要在初始化的时候出现一次,这就使得改变一个应用的具体工厂类变得非常容易,它只需要改变具体工厂即可使用不同的产品配置。抽象工厂的另一个优点是,它让具体的创建实例与客户端分离,客户端是通过他们的抽象接口操纵实例,产品的具体类名也被具体工厂的实现分离,不会出现在客户的代码中。二、解决的问题(WhatToSolve) 常用用于解决数据访问程序,也就是说程序通过使用抽象工厂模式后,可以灵活地在不同的数据库之间切换,而不需要费时费力地改变原有程序。三、抽象工厂模式分析(Analysis)1、抽象工厂模式结构IProductA、IProductA接口:两个产品接口,他们都有可能有两种不同的实现。ProductA1、ProductA2,ProductB1、ProductB2具体实现类:对两个产品接口的具体分类的实现。AbstractFactory抽象类:抽象工厂接口,它里面应该包含所有产品创建的抽象方法。ConcreteFactory1、ConcreteFactory2具体工厂类:创建具有特定实现的产品对象2、源代码1、产品接口IProductA、IProductB及其两种实现publicinterfaceIProductA{voidShow();} lassProductA1:IProductA{publicvoidShow(){("具体产品类{0}展示方法。",().Name);}} lassProductA2:IProductA{publicvoidShow(){("具体产品类{0}展示方法。",().Name);}} publicinterfaceIProductB{voidInsert();} lassProductB1:IProductB{publicvoidInsert(){("具体产品类{0}插入方法。",().Name);}} lassProductB2:IProductB{publicvoidInsert(){("具体产品类{0}插入方法。",().Name);}} 2、抽象工厂接口AbstractFactory,及其具体的工厂AbstractFactory1、AbstractFactory2publicabstractclassAbstractFactory{publicabstractIProductACreateProductA();publicabstractIProductBCreateProductB();} lassAbstractFactory1:AbstractFactory{ publicoverrideIProductACreateProductA(){IProductAproductA1=newProductA1();returnproductA1;} publicoverrideIProductBCreateProductB(){IProductBproductB1=newProductB1();returnproductB1;}} lassAbstractFactory2:AbstractFactory{ publicoverrideIProductACreateProductA(){IProductAproductA2=newProductA2();returnproductA2;} publicoverrideIProductBCreateProductB(){IProductBproductB2=newProductB2();returnproductB2;}} 3、客户端代码staticvoidMain(string[]args){//根据需求调用具体工厂AbstractFactory1AbstractFactoryfactory1=newAbstractFactory1();IProductAproductA1=();IProductBproductB1=();();();Console.