Java设计模式 工厂方法(Factory Method)模式
1.2 工厂方法(Factory Method)模式
工厂方法模式是类的创建模式,又叫虚拟构造子(Virtual Constructor)模式或者多态性工厂(Polymorphic Factory)模式。
工厂方法模式的用意是定义一个创建产品对象的工厂接口,将实际工作推迟到子类中。
1.2.1 工厂方法模式的引进
工厂方法模式是简单工厂模式的进一步抽象和推广。由于使用了多态性,工厂方法模式保持了简单工厂模式的优点,而且克服了它的缺点。下面是工厂方法模式的缩略类图:
在工厂方法模式中,核心的工厂类不再负责所有产品的创建,而是将具体创建的工作交给子类去做。这个核心工厂则变为抽象工厂角色,仅负责给出具工厂子类必须实现的接口,而不接触哪一产品创建的细节。
这种抽象的结果,使这种工厂方法模式可以用来允许系统不修改具体工厂角色的情况下引进新产品,这一特点无疑使得工厂模式具有超过简单工厂模式的优越性。
1.2.2 工厂方法模式的结构
在工厂方法模式中,一般都有一个平行的等级结构,也就是说工厂和产品是对应的的。抽象工厂对应抽象产品,具体工厂对应具体产品。简单的示意图如下:
从上图可以看出,工厂方法模式的系统涉及到了以下角色:
抽象工厂角色:与应用程序无关,任何在模式中创建对象的工厂必须实现这个接口。
具体工厂角色:实现了抽象工厂接口的具体Java类,含有与引用密切相关的逻辑,并且受到应用程序的调用以创建产品对象。
抽象产品角色:工厂方法所创建产品对象的超类型,也就是产品对象的共同父类或共同拥有的接口。
具体产品角色:这个角色实现了抽象产品角色所声名的接口。工厂方法所创建的每个具体产品对象都是某个具体产品角色的实例。
1.2.3 工厂方法模式在农场系统中的实现
1.2.3.1 背景
在简单工厂模式中,有个全能的园丁,控制所有作物的种植、生长和收获。现在农场规模变大了,管理更加专业化了。过去全能的园丁没有了,每一种作物都有专门的园丁管理,形成了规模化和专业化生产。
1.2.3.2 系统设计机构图
1.2.3.3 实现源码
1.2.3.3.1 水果产品接
相关文档:
1. String、StringBuffer、StringBuilder的区别
String不变对象,StringBuffer可变字符串,方法为synchronized,StringBuilder可变字符串,方法非synchronized
2. finally、final、finalize的区别
finally在try-cache-finally中使用; ......
原文:http://www.matrix.org.cn/resource/article/44/44055_Java+Annotation+Reflect.html
关
键字:java,annotation,reflect
前言:
在
上篇文章《Java Annotation入门》
中概要性的介绍了Annotation的定义、使用,范围涵盖较广,但是
深度不够。所以作者在《Java Annotation入门》后,继续整理了Annotation的概念和 ......
Java语言编码规范(Java Code Conventions)SUN标准
1 介绍(Introduction)1.1 为什么要有编码规范(Why Have Code Conventions)1.2 版权声明(Acknowledgments)2 文件名(File Names)2.1 文件后缀(File Suffixes)2.2 常用文件名(Common File Names)3 文件组织(File Organization)3.1 Java源文件(Java Source Fi ......
项目经理的职责:
1、基本职责就是确保项目目标的实现,领导项目团队准时、优质地完成全部工作。
2、与客户沟通,了解项目的整体需求。并与客户保持一定的联系,及时反馈阶段性成果,及时更改客户提出的合理需求。
3、制定项目开发计划文档,量化任务,并合理分配给相关人员。
4、跟踪项目进度,协调项目组成员之间的合 ......