第7讲抽象工厂模式_第1页
第7讲抽象工厂模式_第2页
第7讲抽象工厂模式_第3页
第7讲抽象工厂模式_第4页
第7讲抽象工厂模式_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第7讲抽象工厂方法模式(P141)产品等级结构与产品族抽象工厂模式概述抽象工厂模式的结构与实现抽象工厂模式的应用实例开闭原则的倾斜性抽象工厂模式的优缺点与适用环境产品等级结构与产品族工厂方法模式每个具体工厂只有一个或者一组重载的工厂方法,只能生产一种产品,可能会导致系统中存在大量的工厂类,势必会增加系统的开销抽象工厂模式一个工厂可以生产一系列产品(一族产品),极大减少了工厂类的数量产品等级结构与产品族概念产品等级结构:产品等级结构即产品的继承结构产品族:产品族是指由同一个工厂生产的,位于不同产品等级结构中的一组产品五个产品族,分属于三个不同的产品等级结构模式动机当系统所提供的工厂生产的具体产品并不是一个简单的对象,而是多个位于不同产品等级结构、属于不同类型的具体产品时就可以使用抽象工厂模式抽象工厂模式是所有形式的工厂模式中最为抽象和最具一般性的一种形式抽象工厂模式的定义提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。抽象工厂模式中的具体工厂不只是创建一种产品,它负责创建一族产品当一个工厂等级结构可以创建出分属于不同产品等级结构的一个产品族中的所有对象时,抽象工厂模式比工厂方法模式更为简单、更有效率抽象工厂模式的结构抽象工厂模式包含以下4个角色:AbstractFactory(抽象工厂)ConcreteFactory(具体工厂)AbstractProduct(抽象产品)ConcreteProduct(具体产品)抽象工厂类的典型代码如下publicabstractclassAbstractFactory{publicabstractAbstractProductAcreateProductA();publicabstractAbstractProductBcreateProductB();}具体工厂类的典型代码publicclassConcreteFactory1extendsAbstractFactory{publicAbstractProductAcreateProductA(){returnnewConcreteProductA1();}publicAbstractProductBcreateProductB(){returnnewConcreteProductB1();}}示例一个电器工厂可以生产多种类型的电器,如海尔工厂可以生产海尔电视机、海尔冰箱等,TCL工厂可以生产TCL电视机、TCL冰箱等,而相同类型的电器构成了一个产品等级结构。模式优缺点模式优点隔离了具体类的生成,使得客户端并不需要知道什么被创建当一个产品族中的多个对象被设计成一起工作时,它能够保证客户端始终只使用同一个产品族中的对象增加新的产品族很方便,无须修改已有系统,符合开闭原则模式优缺点模式缺点增加新的产品等级结构麻烦,需要对原有系统进行较大的修改,甚至需要修改抽象层代码,这显然会带来较大的不便,违背了开闭原则模式扩展“开闭原则”的倾斜性“开闭原则”要求系统对扩展开放,对修改封闭,通过扩展达到增强其功能的目的。对于涉及到多个产品族与多个产品等级结构的系统,其功能增强包括两方面:(1)增加产品族:对于增加新的产品族,工厂方法模式很好的支持了“开闭原则”,对于新增加的产品族,只需要对应增加一个新的具体工厂即可,对已有代码无须做任何修改。(2)增加新的产品等级结构:对于增加新的产品等级结构,需要修改所有的工厂角色,包括抽象工厂类,在所有的工厂类中都需要增加生产新产品的方法,不能很好地支持“开闭原则”。模式扩展“开闭原则”的倾斜性抽象工厂模式的这种性质称为“开闭原则”的倾斜性,抽象工厂模式以一种倾斜的方式支持增加新的产品,它为新产品族的增加提供方便,但不能为新的产品等级结构的增加提供这样的方便。模式扩展工厂模式的退化当抽象工厂模式中每一个具体工厂类只创建一个产品对象,也就是只存在一个产品等级结构

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论