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

下载本文档

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

文档简介

第6章抽象工厂模式刘伟本章教学内容抽象工厂模式模式动机与定义模式结构与分析模式实例与解析模式效果与应用模式扩展抽象工厂模式模式动机在工厂方法模式中具体工厂负责生产具体的产品,每一个具体工厂对应一种具体产品,工厂方法也具有唯一性,一般情况下,一个具体工厂中只有一个工厂方法或者一组重载的工厂方法。但是有时候我们需要一个工厂可以提供多个产品对象,而不是单一的产品对象。抽象工厂模式模式动机为了更清晰地理解工厂方法模式,需要先引入两个概念:产品等级结构:产品等级结构即产品的继承结构,如一个抽象类是电视机,其子类有海尔电视机、海信电视机、TCL电视机,则抽象电视机与具体品牌的电视机之间构成了一个产品等级结构,抽象电视机是父类,而具体品牌的电视机是其子类。产品族:在抽象工厂模式中,产品族是指由同一个工厂生产的,位于不同产品等级结构中的一组产品,如海尔电器工厂生产的海尔电视机、海尔电冰箱,海尔电视机位于电视机产品等级结构中,海尔电冰箱位于电冰箱产品等级结构中。抽象工厂模式模式动机产品族与产品等级结构示意图

抽象工厂模式模式动机当系统所提供的工厂所需生产的具体产品并不是一个简单的对象,而是多个位于不同产品等级结构中属于不同类型的具体产品时需要使用抽象工厂模式。抽象工厂模式是所有形式的工厂模式中最为抽象和最具一般性的一种形态。抽象工厂模式与工厂方法模式最大的区别在于,工厂方法模式针对的是一个产品等级结构,而抽象工厂模式则需要面对多个产品等级结构,一个工厂等级结构可以负责多个不同产品等级结构中的产品对象的创建。当一个工厂等级结构可以创建出分属于不同产品等级结构的一个产品族中的所有对象时,抽象工厂模式比工厂方法模式更为简单、有效率。抽象工厂模式模式动机抽象工厂模式示意图抽象工厂模式模式定义

抽象工厂模式(AbstractFactoryPattern):提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。抽象工厂模式又称为Kit模式,属于对象创建型模式。抽象工厂模式模式定义AbstractFactoryPattern:Provideaninterfaceforcreatingfamiliesofrelatedordependentobjectswithoutspecifyingtheirconcreteclasses.Frequencyofuse:high

抽象工厂模式模式结构抽象工工厂模模式模式结结构抽象工工厂模模式包包含如如下角角色::AbstractFactory:抽抽象工工厂ConcreteFactory:具具体工工厂AbstractProduct:抽抽象产产品Product:具具体产产品抽象工工厂模模式模式分分析抽象工工厂模模式模式分分析抽象工工厂模模式模式分分析抽象工工厂模模式模式分分析抽象工工厂类类的典典型代代码如如下::publicabstractclassAbstractFactory{publicabstractAbstractProductAcreateProductA();publicabstractAbstractProductBcreateProductB();}抽象工工厂模模式模式分分析具体工工厂类类的典典型代代码如如下::publicclassConcreteFactory1extendsAbstractFactory{publicAbstractProductAcreateProductA(){returnnewConcreteProductA1();}publicAbstractProductBcreateProductB(){returnnewConcreteProductB1();}}抽象工工厂模模式模式实实例与与解析析实例一一:电电器工工厂一个电电器工工厂可可以产产生多多种类类型的的电器器,如如海尔尔工厂厂可以以生产产海尔尔电视视机、、海尔尔空调调等,,TCL工厂可可以生生产TCL电视机机、TCL空调等等,相相同品品牌的的电器器构成成一个个产品品族,,而相相同类类型的的电器器构成成了一一个产产品等等级结结构,,现使使用抽抽象工工厂模模式模模拟该该场景景。抽象工工厂模模式模式实实例与与解析析实例一一:电电器工工厂抽象工工厂模模式模式实实例与与解析析实例一一:电电器工工厂参考代代码(Chapter06AbstractFactory\sample01)演示……抽象工工厂模模式模式实实例与与解析析实例二二:数数据库库操作作工厂厂某系统统为了了改进进数据据库操操作的的性能能,自自定义义数据据库连连接对对象Connection和语句句对象象Statement,可针针对不不同类类型的的数据据库提提供不不同的的连接接对象象和语语句对对象,,如提提供Oracle或SQLServer专用连连接类类和语语句类类,而而且用用户可可以通通过配配置文文件等等方式式根据据实际际需要要动态态更换换系统统数据据库。。使用用抽象象工厂厂模式式设计计该系系统。。抽象工工厂模模式模式实实例与与解析析实例二二:数数据库库操作作工厂厂抽象工工厂模模式模式优缺点点抽象工厂模模式的优点点抽象工厂模模式隔离了具体体类的生成成,使得客户户并不需要要知道什么么被创建。。由于这种种隔离,更更换一个具具体工厂就就变得相对对容易。所所有的具体体工厂都实实现了抽象象工厂中定定义的那些些公共接口口,因此只需改变具具体工厂的的实例,就就可以在某某种程度上上改变整个个软件系统统的行为。另外,应应用抽象工工厂模式可以实现高高内聚低耦耦合的设计计目的,因此抽象象工厂模式式得到了广广泛的应用用。当一个产产品族中中的多个个对象被被设计成成一起工工作时,,它能够保证证客户端端始终只只使用同同一个产产品族中中的对象象。这对一一些需要要根据当当前环境境来决定定其行为为的软件件系统来来说,是是一种非非常实用用的设计计模式。。增加新的的具体工工厂和产产品族很很方便,,无须修修改已有有系统,,符合““开闭原原则”。抽象工厂厂模式模式优缺缺点抽象工厂厂模式的的缺点在添加新新的产品品对象时时,难以扩展展抽象工工厂来生生产新种种类的产产品,这是因因为在抽抽象工厂厂角色中中规定了了所有可可能被创创建的产产品集合合,要支支持新种种类的产产品就意意味着要要对该接接口进行行扩展,,而这将将涉及到到对抽象象工厂角角色及其其所有子子类的修修改,显显然会带带来较大大的不便便。开闭原则则的倾斜斜性(增加新新的工厂厂和产品品族容易易,增加加新的产产品等级级结构麻麻烦)抽象工厂厂模式模式适用用环境在以下情情况下可可以使用用抽象工工厂模式式:一个系统统不应当依依赖于产产品类实实例如何何被创建建、组合合和表达达的细节节,这对于于所有类类型的工工厂模式式都是重重要的。。系统中有多于一一个的产产品族,而每次次只使用用其中某某一产品品族。属于同一一个产品品族的产产品将在在一起使使用,这一约约束必须须在系统统的设计计中体现现出来。。系统提供供一个产产品类的的库,所有的产产品以同同样的接接口出现现,从而使使客户端不不依赖于于具体实实现。抽象工厂厂模式模式应用用(1)JavaSEAWT(抽象窗窗口工具具包)在Java语言的AWT(抽象窗窗口工具具包)中就使用用了抽象象工厂模模式,它它使用抽抽象工厂厂模式来来实现在在不同的的操作系系统中应应用程序序呈现与与所在操操作系统统一致的的外观界界面。抽象工厂厂模式模式应用用(2)在很多软软件系统统中需要要更换界界面主题题,要求求界面中中的按钮钮、文本本框、背背景色等等一起发发生改变变时,可可以使用用抽象工工厂模式式进行设设计。抽象工厂厂模式模式扩展展“开闭原原则”的的倾斜性性“开闭原原则”要要求系统统对扩展展开放,,对修改改封闭,,通过扩扩展达到到增强其其功能的的目的。。对于涉涉及到多多个产品品族与多多个产品品等级结结构的系系统,其其功能增增强包括括两方面面:(1)增加产品品族:对于增加加新的产产品族,,工厂方方法模式式很好的的支持了了“开闭闭原则””,对于于新增加加的产品品族,只只需要对对应增加加一个新新的具体体工厂即即可,对对已有代代码无须须做任何何修改。。(2)增加新的产品品等级结构::对于增加新的的产品等级结结构,需要修修改所有的工工厂角色,包包括抽象工厂厂类,在所有有的工厂类中中都需要增加加生产新产品品的方法,不不能很好地支支持“开闭原原则”。抽象象工工厂厂模模式式的的这这种种性性质质称称为为“开开闭闭原原则则””的的倾倾斜斜性性,抽抽象象工工厂厂模模式式以以一一种种倾倾斜斜的的方方式式支支持持增增加加新新的的产产品品,,它它为为新新产产品品族族的的增增加加提提供供方方便便,,但但不不能能为为新新的的产产品品等等级级结结构构的的增增加加提提供供这这样样的的方方便便。。抽象象工工厂厂模模式式模式式扩扩展展工厂厂模模式式的的退退化化当抽抽象象工工厂厂模模式式中中每每一一个个具具体体工工厂厂类类只只创创建建一一个个产产品品对对象象,,也也就就是是只存存在在一一个个产产品品等等级级结结构构时时,,抽抽象象工工厂厂模模式式退退化化成成工工厂厂方方法法模模式式;当当工厂厂方方法法模模式式中中抽抽象象工工厂厂与与具具体体工工厂厂合合并并,,提提供供一一个个统统一一的的工工厂厂来来创创建建产产品品对对象象,,并并将将创创建建对对象象的的工工厂厂方方法法设设计计为为静静态态方方法法时时,,工工厂厂方方法法模模式式退退化化成成简简单单工工厂厂模模式式。本章章小小结结抽象象工工厂厂模模式式提提供供一一个个创创建建一一系系列列相相关关或或相相互互依依赖赖对对象象的的接接口口,,而而无无须须指指定定它它们们具具体体的的类类。。抽抽象象工工厂厂模模式式又又称称为为Kit模式式,,属属于于对对象象创创建建型型模模式式。。抽象象工工厂厂模模式式包包含含四四个个角角色色::抽抽象象工工厂厂用用于于声声明明生生成成抽抽象象产产品品的的方方法法;;具具体体工工厂厂实实现现了了抽抽象象工工厂厂声声明明的的生生成成抽抽象象产产品品的的方方法法,,生生成成一一组组具具体体产产品品,,这这些些产产品品构构成成了了一一个个产产品品族族,,每每一一个个产产品品都都位位于于某某个个产产品品等等级级结结构构中中;;抽抽象象产产品品为为每每种种产产品品声声明明接接口口,,在在抽抽象象产产品品中中定定义义了了产产品品的的抽抽象象业业务务方方法法;;具具体体产产品品定定义义具具体体工工厂厂生生产产的的具具体体产产品品对对象象,,实实现现抽抽象象产产品品接接口口

温馨提示

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

最新文档

评论

0/150

提交评论