易截截图软件、单文件、免安装、纯绿色、仅160KB

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 水果产品接


相关文档:

用Java写爬网页的小工具

其实也不是爬网页,只是从一个XML文件取URL,然后抓取网页内容。
主要有几点,备忘:
1. 全局代理,设置之后所有的URL都使用此代理,这样可以直接调用FileUtils.copyURLToFile:
private void initProxy(String host, int port,
final String username, final String password) {
Authenticator.setDefault(new Aut ......

Java 设计架构

目录
摘要 ……………………………………………………………………2
文献综述 ……………………&hel ......

java语言SUN公司标准编码规范

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 ......

java 的悲哀swingx死了

虽然可以通过 https://swinglabs.dev.java.net/ 访问但是已经停止更新了,不知道新东家oracle是否会资助。
子项目
名称
摘要


actions
A simple framework for declarative actions in Swing apps
aerith
Cool JavaOne Demo
appframework
Swing Application Framework
beansbinding
Beans Bind ......

java字符编码原理浅析

本周遇到一个java乱码问题,于是对java的编码问题做了一些实验和了解。简单分析如下:
先看下如下代码:
import
java.io.UnsupportedEncodingException;
public
class
CharSetTest {

public
static
void
main(String[] args)
throws
UnsupportedEncodingException {
String test =
"
篮球
" ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号