java设计模式-工厂模式
来源:互联网 发布:泰勒展开式的矩阵形式 编辑:程序博客网 时间:2024/06/05 15:05
工厂模式的作用:
使创建者和调用者分离,类似spring的控制反转
应用场景:
JDK中的Calendar的getInstance方法
JDBC中的connection的获取
XML解析DocumentBuilderFactory创建解析器
反射中的对象的newInstance()
工厂模式主要分类:
1.简单工厂模式,最简单,使用最多,不易拓展
2.方法工厂模式,通过添加新的工程类实现拓展,会造成类很多
简单工厂模式举下例子:
首先是定义下公共类接口
/** * IT工程接口类 * @author liuxg * @date 2016年5月24日 下午6:50:04 */public interface ITEngineer { /** * IT职位 * @return */ void position(); }
再者是实现类
public class JavaEngineer implements ITEngineer { @Override public void position() { System.out.println("java工程师"); }}public class JavaScriptngineer implements ITEngineer { @Override public void position() { System.out.println("JavaScript工程师"); }}
再写个工厂类,用来专门创建类
/** * 简单工厂类 * @author liuxg * @date 2016年5月24日 下午6:58:33 */public class SimpleFactory { public static ITEngineer getITEnginee(String position){ switch (position) { case "Java": return new JavaEngineer(); case "JavaScript": return new JavaScriptngineer(); } return null ; }}
我们在客户端调用,就只依赖SimpleFactory 这个类了,实现了调用者和创造者的分离
/** * 测试客户端 * @author liuxg * @date 2016年5月24日 下午6:55:44 */public class Client01 { public static void main(String[] args) { ITEngineer engineer = SimpleFactory.getITEnginee("Java"); engineer.position(); }}
简单工厂模式设计简单,用得最多,但不易拓展,若要易于拓展,就使用方法工厂模式吧
首先我们来创建一个公共接口类
/** * 该接口用于创建工程师实体类 */public interface MethodFactory { ITEngineer create(); }
再创建俩个factory实现MethodFactory
public class JavaFactory implements MethodFactory{ @Override public ITEngineer create() { return new JavaEngineer(); }}public class JavaScriptFactory implements MethodFactory{ @Override public ITEngineer create() { return new JavaScriptngineer(); }}
在客户端调用的时候,我们就可以直接new了
/** * 测试客户端 * @author liuxg * @date 2016年5月24日 下午6:55:44 */public class Client02 { public static void main(String[] args) { ITEngineer engineer1 = new JavaScriptFactory().create(); ITEngineer engineer2 = new JavaFactory().create(); engineer1.position(); engineer2.position(); }}
如果这时候,我们需要拓展ITEngineer ,例如拓展一个UI工程师,那我们就再定义一个UIFactory来实现MethodFactory,然后返回UI工程师的实体类即可,不需要去修改任何类和接口
0 0
- java设计模式----工厂模式
- java 设计模式-工厂模式
- java设计模式-工厂模式
- java设计模式------工厂模式
- JAVA设计模式-工厂模式
- Java 设计模式 工厂模式
- Java设计模式-工厂模式
- Java设计模式--工厂模式
- Java设计模式 - 工厂模式
- java设计模式--工厂模式
- Java设计模式:工厂模式
- Java设计模式--工厂模式
- java设计模式-------工厂模式
- java设计模式------工厂模式
- JAVA设计模式:工厂模式
- java设计模式:工厂模式
- java设计模式 ----工厂模式
- Java设计模式--工厂模式
- 杭电1996
- jsbridage框架
- redis内存编码数据结构(整数集合、压缩列表)
- 第97课: 使用Spark Streaming+Spark SQL+mysql 实现在线动态计算出特定时间窗口下的不同种类商品中的热门商品排名(详细内幕版本)
- 组合数处理(逆元求解)
- java设计模式-工厂模式
- 完整配置hadoop的环境变量
- 关于Android的post,get、cookie网络获取的一些坑
- java学习总结(16.05.24)向main方法的形参传递参数的方法
- 关于oracle中字符串的截取——substr
- Android常见Crash类型分析(一)
- 判断字符串是不是对称字符串
- dev_queue_xmi函数详解
- 使用Mendeley快速创建CTex/Word文献引用