- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * 5.1 抽象工厂设计模式 (Abstract Factory) 设计目标 提供一个创建相关族或者相互依赖对象的接口,而不指明它们的具体类。 别名: Kit 第五章 创建型设计模式(续) 5.1.1 抽象工厂的结构 AbstractFactory createProductA() createProductB() ConcreteFactory1 ConcreteFactory2 createProductA() createProductB() createProductA() createProductB() Client AbstractProductA AbstractProductB ProductA2 ProductA1 ProductB2 ProductB1 一族对象 例: 支持多种视感(look-and-feel)标准的用户界面工具包 WidgetFactory createScrollBar() createWindow() MACWidgetFactory MSWidgetFactory createScrollBar() createWindow() Client Window MACWindow MACScrollBar 两种不同风格: MAC MS MSWindow ScrollBar createScrollBar() createWindow() MSScrollBar MS风格 例:不同类型电脑生产 ComputerProducer createCPU() createRAM() MacProducer PcProducer createCPU() createRAM() createCPU() createRAM() Client InterfaceCPU InterfaceRAM PcCPU MacCPU PcRAM MacRAM 制菜抽象工厂的结构图 制菜工厂 做蔬菜() 做荤菜() 川菜工厂 沪菜工厂 做蔬菜() 做荤菜() 做蔬菜() 做荤菜() 顾客 蔬菜类 肉类 土豆 青菜 牛肉 鸡肉 Abstract Factory 设计模式在Java API中的应用 Java中的java.awt.Toolkit抽象类运用了Abstract Factory设计模式 ButtonPeer implementation 3 ImagePeer implementation 3 ToolKit createButton() createImage() ConcreteToolKit1 ConcreteToolKit2 ConcreteToolKit3 ButtonPeer ImagePeer createButton() createImage() createButton() createImage() createButton() createImage() ButtonPeer类: 包含了平 台相关的代码,以产生 可视按钮化 5.1.2 适用性 一个系统要独立于他的产品的创建、组合和表示时。 一个系统要有多个产品系列中的一个来配置时。 当你要强调一系列相关的产品对象的设计以便进行联合使用时。 当你提供一个产品类库,而只是相显示它们的接口而不是实现时。 5.1.3 协作 通常在运行时刻创建一个Concrete Factory类的实例。这一具体的工厂创建 具有特定实现的产品对象。为创建不同的产品对象,客户使用不同的具体工厂。 AbstractFactory将产品对象的创建延迟到它的ConcreteFactory子类。 5.1.4 效果 AbstractFactory模式的优点和缺点: 1) 它分离了具体的类 2) 它使得易于交换产品系列 3) 它有利于产品的一致性 4) 难以支持新种类的产品 关键概念: Abstract Factory 设计一个应用程序,在这个应用程序中,有几种可能的对象集合风格,使 用协同的工厂方法捕获这些风格。 5.2 Builder 设计模式 意图: 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 5.2.1 Builder结构图 Director construct() For all objects in construct(){ Builder buildPart() }
您可能关注的文档
最近下载
- (完整版)机械租赁方案.docx VIP
- 企业管理5w1h培训(5w管理法则培训课程).pptx VIP
- 手术室业务学习培训ppt课件.pdf VIP
- 新解读GB_T 8190.2 - 2011往复式内燃机排放测量第2部分_气体和颗粒排放物的现场测量最新解读.docx VIP
- 小学数学四年级上册《公顷和平方千米》练习题实用.doc VIP
- 亚硝酸盐含量测定.ppt VIP
- 无人机激光雷达森林地上碳储量估测技术规范.docx VIP
- 全国教育工作会议精神解读学习资料.ppt VIP
- 保护环境_节约资源_.ppt VIP
- 新解读《GB_T 8190.1-2023往复式内燃机 排放测量 第1部分:气体和颗粒排放物的试验台测量系统》最新解读.pptx VIP
文档评论(0)