欢迎来到天天文库
浏览记录
ID:40631436
大小:270.51 KB
页数:17页
时间:2019-08-05
《创建型设计模式2》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、5.1抽象工厂设计模式(AbstractFactory)设计目标提供一个创建相关族或者相互依赖对象的接口,而不指明它们的具体类。别名:Kit第五章创建型设计模式(续)5.1.1抽象工厂的结构AbstractFactorycreateProductA()createProductB()ConcreteFactory1ConcreteFactory2createProductA()createProductB()createProductA()createProductB()ClientAbstractProductAAbstra
2、ctProductBProductA2ProductA1ProductB2ProductB1一族对象例:支持多种视感(look-and-feel)标准的用户界面工具包WidgetFactorycreateScrollBar()createWindow()MACWidgetFactoryMSWidgetFactorycreateScrollBar()createWindow()ClientWindowMACWindowMACScrollBar两种不同风格:MACMSMSWindowScrollBarcreateScrollBar
3、()createWindow()MSScrollBarMS风格例:不同类型电脑生产ComputerProducercreateCPU()createRAM()MacProducerPcProducercreateCPU()createRAM()createCPU()createRAM()ClientInterfaceCPUInterfaceRAMPcCPUMacCPUPcRAMMacRAM制菜抽象工厂的结构图制菜工厂做蔬菜()做荤菜()川菜制作工厂沪菜制作工厂做蔬菜()做荤菜()做蔬菜()做荤菜()顾客蔬菜类肉类土豆青菜牛肉鸡
4、肉AbstractFactory设计模式在JavaAPI中的应用Java中的java.awt.Toolkit抽象类运用了AbstractFactory设计模式ButtonPeerimplementation3ImagePeerimplementation3ToolKitcreateButton()createImage()ConcreteToolKit1ConcreteToolKit2ConcreteToolKit3ButtonPeerImagePeercreateButton()createImage()createButt
5、on()createImage()createButton()createImage()ButtonPeer类:包含了平台相关的代码,以产生可视按钮化5.1.2适用性一个系统要独立于他的产品的创建、组合和表示时。一个系统要有多个产品系列中的一个来配置时。当你要强调一系列相关的产品对象的设计以便进行联合使用时。当你提供一个产品类库,而只是相显示它们的接口而不是实现时。5.1.3协作通常在运行时刻创建一个ConcreteFactory类的实例。这一具体的工厂创建具有特定实现的产品对象。为创建不同的产品对象,客户使用不同的具体工厂。
6、AbstractFactory将产品对象的创建延迟到它的ConcreteFactory子类。5.1.4效果AbstractFactory模式的优点和缺点:1)它分离了具体的类2)它使得易于交换产品系列3)它有利于产品的一致性4)难以支持新种类的产品关键概念:AbstractFactory设计一个应用程序,在这个应用程序中,有几种可能的对象集合风格,使用协同的工厂方法捕获这些风格。5.2Builder设计模式意图:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。5.2.1Builder结构图Direct
7、orconstruct()Forallobjectsinconstruct(){BuilderbuildPart()}BuilderbuildPart()getResult()ConcreteBuilderbuildPart()getResult()Product为创建一个Product对象的各个部件指定抽象接口实现Builder的接口以构造和装配改产品的各个部件定义并明确它所创建的表示提供一个检索产品的接口getResult构造一个使用Builder接口的对象被构造的复杂对象生成器导向器为什么产品不用抽象类?5.2.2协作客
8、户创建Director对象,并用它所想要的Builder对象进行配置。一旦产品部件被生成,导向器就会通知生成器。生成器处理导向器的请求,并将部件添加到该产品中。客户从生成器中检索产品。aClientaDirectoraConcreteBuildernewConcreteBui
此文档下载收益归作者所有