- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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.javapackage com.lavasoft.patterns.abstractfactory.ybms;
/**?* 工厂模式--抽象工厂模式--一般性模式(农场应用)?* ReadMe:? 抽象产品角色:蔬菜接口?*/public interface Veggie {}
?
1.3.1.4.4?热带水果:TropicalFruit.javapackage 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.javapackage com.lavasoft.patterns.abstractfactory.ybms;
/**
?* 工厂模式--抽象工厂模式--一般性模式(农场应用)?* ReadMe:? 具体产品
您可能关注的文档
- 报关1001班级班规1001.doc
- 报关单位注册信息年度报告和填表说明.doc
- 报关单常考重点栏目总结.doc
- 报关单的解题思路和技巧.docx
- 报关员个人简历.doc
- 报关员培训A卷1.doc
- 报关员个人求职简历.doc
- 报关员第三章讲义.doc
- 报关员经验自序2.doc
- 报关员职称评比.doc
- DB44_T+2767-2025河口海湾总氮、总磷水质评价指南.docx
- 中医药科技成果转化评价技术规范.docx
- DB44_T+2750-2025农村供水工程数字化建设技术导则.docx
- DB44_T+2769-2025金属矿山生态修复技术规范.docx
- 镁合金航天航空零部件长效防护微弧氧化膜层工艺规范.docx
- 《甘青青兰中绿原酸和胡麻苷含量的测定 高效液相色谱法》发布稿.pdf
- DB44_T+753-2025声环境质量自动监测技术规范.docx
- 信息技术 智算服务 异构算力虚拟化及池化系统要求.docx
- DB44_T+2759-2025黄荆栽培技术规程.docx
- 废生物制药溶媒再生乙腈.docx
原创力文档


文档评论(0)