Java 之 工厂方法模式
2016-06-29 21:49
363 查看
定义
工厂方法(Factory Method)模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品。类图
角色
1. 抽象工厂 Creator:这是工厂方法的核心,在实际的系统中这个角色也常常使用抽象类实现2. 具体工厂 Concrete Creator:
3. 抽象产品 Product
4. 具体产品 ConcreteProduct
示例:简单工厂到工厂方法的演变
简单工厂://抽象产品 interface Product{} //具体产品 class ProductA implements Product{} class ProductB implements Product{} //产品工厂(下一步就是它的进化,就变成了工厂方法模式) public class ProductFactory { private ProductFactory(){} public static Product getProduct(String productName){ if (productName.equals("A")) { return new ProductA(); }else if (productName.equals("B")) { return new ProductB(); }else { return null; } } }
工厂方法:
//抽象产品 interface Product{} //具体产品 class ProductA implements Product{} class ProductB implements Product{} //将简单工厂中的工厂给抽象成接口 interface Factory{ Product getProduct(); } //具体的工厂A,创造产品A class FactoryA implements Factory{ public Product getProduct() { return new ProductA(); } } //具体的工厂B,创造产品B class FactoryB implements Factory{ public Product getProduct() { return new ProductB(); } }
可以看到,产品部分并没有变化,只是将简单工厂中的工厂类抽象成接口,并给相应产品添加相应的工厂类,就进化成了工厂方法模式。
JDBC的API 与 Collection的ArrayList和HashSet 也是工厂方法的一种应用,详见转载连接,真正做项目的过程当中很少用到工厂方法模式,这个模式更多的是帮助我们理解现有的开源项目,就像现在,你是不是对JDBC的大体框架有了一定认识了呢,如果你不知道这个模式,可能看源码会觉得一头雾水呢。
规则只是用来指导你的,不是用来限制你的,只要设计合理,你的设计就是规则!
有关抽象工厂模式详见:/detail/2582033902.html
相关文章推荐
- Spring-三种依赖注入方式
- ubuntu中配置jdk环境
- spring+mybatis利用pageHelper分页插件分页
- map转对象
- SpringMVC @RequestParam注解
- VS2010-VS2012运行编译Spring.NET问题解决
- Struts2配置文件详解
- 多线程_JAVA
- Java Future & Guava ListenableFuture关系图
- java线程(一):线程创建与线程状态
- 最大字段和 时间复杂度线性阶 java
- springmvc上传图片并显示图片--支持多图片上传
- Java学习笔记之深入理解关键字final
- java中的不为空判断
- Java 语言对XMl 格式文件的 纯解析
- Java WebSocket编程与网页简易聊天室
- Java 的synchronized 复习 二
- Struts2系列:(17)ActionConfig
- Java笔记
- Spring注解Annotation(二)