设计模式抽象工厂模式.pptx

上传人:莉*** 文档编号:87464646 上传时间:2023-04-16 格式:PPTX 页数:20 大小:2.11MB
返回 下载 相关 举报
设计模式抽象工厂模式.pptx_第1页
第1页 / 共20页
设计模式抽象工厂模式.pptx_第2页
第2页 / 共20页
点击查看更多>>
资源描述

《设计模式抽象工厂模式.pptx》由会员分享,可在线阅读,更多相关《设计模式抽象工厂模式.pptx(20页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、大纲w产品等级结构与产品族w抽象工厂模式概述w抽象工厂模式的结构与实现w抽象工厂模式的应用实例w开闭原则的倾斜性w抽象工厂模式的优缺点与适用环境第1页/共20页产品等级结构与产品族工厂方法模式每个具体工厂只有一个或者一组重载的工厂方法,只能生产一种产品,可能会导致系统中存在大量的工厂类,势必会增加系统的开销抽象工厂模式一个工厂可以生产一系列产品(一族产品),极大减少了工厂类的数量第2页/共20页产品等级结构与产品族概念产品等级结构:产品等级结构即产品的继承结构产品族:产品族是指由同一个工厂生产的,位于不同产品等级结构中的一组产品五个产品族,分属于三个不同的产品等级结构第3页/共20页抽象工厂模

2、式概述模式动机当系统所提供的工厂生产的具体产品并不是一个简单的对象,而是多个位于不同产品等级结构、属于不同类型的具体产品时就可以使用抽象工厂模式抽象工厂模式是所有形式的工厂模式中最为抽象和最具一般性的一种形式第4页/共20页抽象工厂模式概述抽象工厂模式的定义对象创建型模式抽抽象象工工厂厂模模式式:提供一个创创建建一一系系列列相相关关或或相相互互依依赖赖对对象象的接口的接口,而无须指定它们具体的类。Abstract Factory Pattern:Provide an interface for creating families of related or dependent objects

3、without specifying their concrete classes.第5页/共20页抽象工厂模式概述抽象工厂模式的定义又称为工具(Kit)模式抽象工厂模式中的具体工厂不只是创建一种产品,它负责创建一族产品当一个工厂等级结构可以创建出分属于不同产品等级结构的一个产品族中的所有对象时,抽象工厂模式比工厂方法模式更为简单、更有效率第6页/共20页抽象工厂模式的结构与实现抽象工厂模式的结构第7页/共20页抽象工厂模式的结构与实现抽象工厂模式的结构抽象工厂模式包含以下4个角色:AbstractFactory(抽象工厂)ConcreteFactory(具体工厂)AbstractProduc

4、t(抽象产品)ConcreteProduct(具体产品)第8页/共20页抽象工厂模式的结构与实现抽象工厂模式的实现典型的抽象工厂类代码:abstract class AbstractFactorypublic abstract AbstractProductA CreateProductA();/工厂方法一工厂方法一public abstract AbstractProductB CreateProductB();/工厂方法二工厂方法二第9页/共20页抽象工厂模式的结构与实现抽象工厂模式的实现典型的具体工厂类代码:class ConcreteFactory1:AbstractFactory /

5、工厂方法一工厂方法一public override AbstractProductA CreateProductA()return new ConcreteProductA1();/工厂方法二工厂方法二public override AbstractProductB CreateProductB()return new ConcreteProductB1();第10页/共20页抽象工厂模式的应用实例实例说明某软件公司要开发一套界面皮肤库,可以对基于.NET平台的桌面软件进行界面美化。用户在使用时可以通过菜单来选择皮肤,不同的皮肤将提供视觉效果不同的按钮、文本框、组合框等界面元素,例如春天(Sp

6、ring)风格的皮肤将提供浅绿色的按钮、绿色边框的文本框和绿色边框的组合框,而夏天(Summer)风格的皮肤则提供浅蓝色的按钮、蓝色边框的文本框和蓝色边框的组合框,其结构示意图如下图所示:该皮肤库需要具备良好的灵活性和可扩展性,用户可以自由选择不同的皮肤,开发人员可以在不修改既有代码的基础上增加新的皮肤。现使用抽象工厂模式来设计该界面皮肤库。界面皮肤库结构示意图第11页/共20页抽象工厂模式的应用实例实例类图界面皮肤库结构图第12页/共20页抽象工厂模式的应用实例实例代码(1)Button:按钮接口,充当抽象产品(2)SpringButton:Spring按钮类,充当具体产品(3)Summer

7、Button:Summer按钮类,充当具体产品(4)TextField:文本框接口,充当抽象产品(5)SpringTextField:Spring文本框类,充当具体产品(6)SummerTextField:Summer文本框类,充当具体产品(7)ComboBox:组合框接口,充当抽象产品(8)SpringComboBox:Spring组合框类,充当具体产品(9)SummerComboBox:Summer组合框类,充当具体产品(10)SkinFactory:界面皮肤工厂接口,充当抽象工厂(11)SpringSkinFactory:Spring皮肤工厂,充当具体工厂(12)SummerSkinFa

8、ctory:Summer皮肤工厂,充当具体工厂(13)配置文件App.config(14)Program:客户端测试类演示演示演示演示参考代码参考代码(DesignPatternAbstractFactorySample)第13页/共20页抽象工厂模式的应用实例结果及分析更换皮肤,只需修改配置文件 第14页/共20页开闭原则的倾斜性增加产品族对于增加新的产品族,抽象工厂模式很好地支持了开闭原则,只需要增加具体产品并对应增加一个新的具体工厂,对已有代码无须做任何修改增加新的产品等级结构对于增加新的产品等级结构,需要修改所有的工厂角色,包括抽象工厂类,在所有的工厂类中都需要增加生产新产品的方法,违

9、背了开闭原则第15页/共20页抽象工厂模式的优缺点与适用环境模式优点隔离了具体类的生成,使得客户端并不需要知道什么被创建当一个产品族中的多个对象被设计成一起工作时,它能够保证客户端始终只使用同一个产品族中的对象增加新的产品族很方便,无须修改已有系统,符合开闭原则第16页/共20页抽象工厂模式的优缺点与适用环境模式缺点增加新的产品等级结构麻烦,需要对原有系统进行较大的修改,甚至需要修改抽象层代码,这显然会带来较大的不便,违背了开闭原则第17页/共20页抽象工厂模式的优缺点与适用环境模式适用环境一个系统不应当依赖于产品类实例如何被创建、组合和表达的细节系统中有多于一个的产品族,但每次只使用其中某一产品族属于同一个产品族的产品将在一起使用,这一约束必须在系统的设计中体现出来产品等级结构稳定,设计完成之后,不会向系统中增加新的产品等级结构或者删除已有的产品等级结构第18页/共20页ENDENDENDEND第19页/共20页感谢您的观看!第20页/共20页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > PPT文档

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁