Java 23种设计模式之工厂方法模式
来源:互联网 发布:选择题自动填充软件 编辑:程序博客网 时间:2024/05/16 17:24
1. 概念
定义一个用于创建对象的接口,让子类决定实例化哪个类。 工厂方法使一个类的实例化延迟到其子类。
2. 创建父类接口
public interface ILeiFeng { /** * 扫地 */ void sweep(); /** * 洗衣服 */ void wash(); /** * 买米 */ void buyRice(); }
3. 创建产品类实现父类接口
1.产品一:学生 public class Student implements ILeiFeng { @Override public void sweep() { System.out.println("学生扫地"); } @Override public void wash() { System.out.println("学生洗衣服"); } @Override public void buyRice() { System.out.println("学生买米"); } } 2.产品二:志愿者 public class Volunteer implements ILeiFeng{ @Override public void sweep() { System.out.println("志愿者扫地"); } @Override public void wash() { System.out.println("志愿者洗衣服"); } @Override public void buyRice() { System.out.println("志愿者买米"); } }
4. 创建工厂类父类接口
public interface IFactory { /** * 创建雷锋对象 * @return */ ILeiFeng createLeiFeng(); }
5. 创建工厂类子类实现工厂类父类接口
1.学生工厂类实现 public class StudentFactory implements IFactory { @Override public ILeiFeng createLeiFeng() { return new Student(); } } 2.志愿者工厂类实现 public class VolunteerFactory implements IFactory { @Override public ILeiFeng createLeiFeng() { return new Volunteer(); } }
6. 测试类
public class Test { @org.junit.Test public void test(){ //需要切换 只需要修改这个工厂类 IFactory factory = new VolunteerFactory(); ILeiFeng leiFeng = factory.createLeiFeng(); leiFeng.sweep(); leiFeng.wash(); leiFeng.buyRice(); } }
7.小结
优: 克服了简单工厂开放-封闭原则,保持了封装对象创建过程的优点, 拥抱变化,符合迪米特法则,符合依赖倒置原则,符合里氏替换原则。 缺: 需要Creator和相应的子类作为factory method的载体,如果应用模型 确实需要creator和子类存在,则很好;否则的话,需要增加一个类层次。
阅读全文
0 0
- Java 23种设计模式之工厂方法模式
- JAVA设计模式之工厂模式之工厂方法模式
- Java设计模式之工厂方法模式
- Java设计模式之工厂方法模式
- java设计模式之工厂方法模式
- Java设计模式之工厂方法模式
- Java设计模式之工厂方法模式
- java设计模式之工厂方法模式
- Java设计模式之工厂方法模式
- Java设计模式之工厂方法模式
- Java设计模式之工厂方法模式
- 【Java设计模式】之工厂方法模式
- Java设计模式之工厂方法模式
- java设计模式之工厂方法模式
- Java设计模式之工厂方法模式
- java设计模式之"工厂方法模式"
- Java设计模式之工厂方法模式
- Java设计模式之工厂方法模式
- 1002. 写出这个数 (20) c++
- 阿里Maven仓库 -- Settings.xml
- CVPR 2017 Enhancing Detection Model for Multiple Hypothesis Tracking 阅读笔记
- 第五章 LR分析法
- 第九节 java数组的介绍,数组定义,数组排序,Arrays类静态方法使用,以及源码解析
- Java 23种设计模式之工厂方法模式
- 汉奥奇门遁甲2.0发布
- 周末训练笔记+HDU1205+POJ1306【排列组合】
- <编译原理>NFA转化DFA 及 DFA的化简
- java 常用十种设计模式示例归纳 | 已打包请带走
- 程序设计实习MOOC / 程序设计与算法(一)第三周测验(2017冬季)A:鸡尾酒疗法
- 有关光照模块的具体问题及解决方案
- Android关于buildToolVersion与CompileSdkVersion的区别 点击打开链接StackOverFlow中对这个问题进行了详细的讨论:http://stackoverfl
- 数据结构实验之图论五:从起始点到目标点的最短步数(BFS)