抽象工厂(Abstract-Factory)模式.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1.3?抽象工厂(Abstract Factory)模式 ??? 抽象工厂模式可以向客户端提供一个接口,使得客户端在不必指定产品具体类型的情况下,创建多个产品族中的产品对象。这就是抽象工厂模式的用意。 ??? 每个模式都是针对一定问题的解决方案。抽象工厂模式面对的问题是多产品等级结构的系统设计。 ??? 在学习抽象工厂具体实例之前,应该明白两个重要的概念:产品族和产品等级。 ??? 产品族:是指位于不同产品等级结构中,功能相关联的产品组成的家族。比如AMD的CPU和AMD芯片的主板,组成一个家族。Intel的CPU和Intel芯片的主板,又组成一个家族。而这两个家族都来自于两个产品等级:CPU,主板。一个等级结构是由相同的结构的产品组成,示意图如下: ??? 理解这个产品结构是理解抽象工厂模式的关键所在,所以我不惜花费时间来画此图。如果领悟不到此图的含义,就无法区分工厂方法模式和抽象工厂模式的区别。 ??? 从上图可以看出,抽象工厂模式的每个工厂创造出来的都是一族产品,而不是一个或者一组。组是可以随意组合的!其实两个就这点点差别,呵呵,估计现在你已经差不多明白了抽象工厂模式的含义。不废话了,看个例子,真相将大白于天下! 1.3.1?抽象工厂模式在农场中的实现 1.3.1.1?背景 ??? 聪明的农场主总是让自己的庄园越来越有价值,“农场”在经历了简单工厂模式和工厂模式后,不断的扩大生产。如今,再次面临新的大发展,一项重要的工作就是引进塑料大棚技术,在大棚里种植热带(Tropical)和亚热带(Northern)的水果和蔬菜,用以满足市场需求,获取更大的利益。 1.3.1.2?产品角色图 ??? 经过分析,对产品角色进行分析得出下图 1.3.1.3?系统设计 ??? 经过分析,所谓的各个园丁其实就是工厂角色,而蔬菜和水果则是产品角色。将抽象工厂模式用于农场中,系统设计图如下: 1.3.1.4?实现源码 1.3.1.4.1?抽象工厂:Gardener.java package com.lavasoft.patterns.abstractfactory.ybms; /** ?* 工厂模式--抽象工厂模式--一般性模式(农场应用) ?* ReadMe:? 抽象工厂角色:工厂接口 ?*/ public interface Gardener { ??? public Fruit createFruit(String name); ??? public Veggie createVeggie(String name); } ? 1.3.1.4.2?抽象水果产品:Fruit.java package com.lavasoft.patterns.abstractfactory.ybms; /** ?* 工厂模式--抽象工厂模式--一般性模式(农场应用) ?* ReadMe:? 抽象产品角色:水果接口 ?*/ public interface Fruit { } ? 1.3.1.4.3?抽象蔬菜产品:Veggie.java package com.lavasoft.patterns.abstractfactory.ybms; /** ?* 工厂模式--抽象工厂模式--一般性模式(农场应用) ?* ReadMe:? 抽象产品角色:蔬菜接口 ?*/ public interface Veggie { } ? 1.3.1.4.4?热带水果:TropicalFruit.java package com.lavasoft.patterns.abstractfactory.ybms; /** ?* 工厂模式--抽象工厂模式--一般性模式(农场应用) ?* ReadMe:? 具体产品角色:热带水果 ?*/ public class TropicalFruit implements Fruit { ??? private String name; ??? public TropicalFruit(String name) { ??????? System.out.println(热带工厂为您创建了:热带水果-+name); ??? } ??? public String getName() { ??????? return name; ??? } ??? public void setName(String name) { ??????? this.name = name; ??? } } ? 1.3.1.4.5?热带蔬菜:TropicalVeggie.java package com.lavasoft.patterns.abstractfactory.ybms; /** ?* 工厂模式--抽象工厂模式--一般性模式(农场应用) ?* ReadMe:? 具体产品

文档评论(0)

139****4073 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档