抽象工厂模式2_第1页
抽象工厂模式2_第2页
抽象工厂模式2_第3页
抽象工厂模式2_第4页
抽象工厂模式2_第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

提交评论