简单工厂模式-Java篇
2016-04-26 15:29
405 查看
简单工厂模式就是考虑如何实例化对象的问题,就是说到底要实例化谁,将来会不会增加实例化对象,比如计算器类中增加开根元素,应该考虑用一个单独的类来创造实例的过程,这就是工厂。下面将利用计算器类举例,解释简单工厂模式:
1.运算符类:
2.利用继承和多态实现代码松耦合:
2.1加法类继承自运算符类:
2.2减法类继承自运算符类:
2.3乘法类继承自运算符类:
2.4除法类继承自运算符类:
3.简单的运算工厂类:
4.工厂模式举例:
1.运算符类:
package com.lujie; public class Operation { private double _numberA=0; private double _numberB=0; public void set_numberA(double _numberA) { this._numberA = _numberA; } public void set_numberB(double _numberB) { this._numberB = _numberB; } public double get_numberA() { return _numberA; } public double get_numberB() { return _numberB; } public double getResult() { double result=0; return result; } }
2.利用继承和多态实现代码松耦合:
2.1加法类继承自运算符类:
package com.lujie; public class OperationAdd extends Operation{ public double getResult() { double result =0; result=this.get_numberA()+this.get_numberB(); return result; } }
2.2减法类继承自运算符类:
package com.lujie; public class OperationSub extends Operation{ public double getResult() { double result =0; result=this.get_numberA()-this.get_numberB(); return result; } }
2.3乘法类继承自运算符类:
package com.lujie; public class OperationMul extends Operation{ public double getResult() { double result =0; if(this.get_numberB()==0) result=this.get_numberA()*this.get_numberB(); return result; } }
2.4除法类继承自运算符类:
package com.lujie; public class OperationDiv extends Operation{ public double getResult() { double result =0; try { result=this.get_numberA()/this.get_numberB(); } catch (Exception e) { System.out.println("除数不能为0!"); } return result; } }
3.简单的运算工厂类:
class OperationFactory{ public static Operation createOperate(String operate) { Operation oper=null; switch (operate) { case "+": oper=new OperationAdd(); break; case "-": oper=new OperationSub(); break; case "*": oper=new OperationMul(); break; case "/": oper=new OperationDiv(); break; } return oper; } }
4.工厂模式举例:
public static void main(String[] args) { Operation oper; oper=OperationFactory.createOperate("/"); oper.set_numberA(1); oper.set_numberB(0); double result=oper.getResult(); System.out.println("结果为:"+result); }
相关文章推荐
- java基础数据遍历(3) 数组的排序
- SpringMVC初探
- (2.3.12)java正则表达式判断数字
- java 序列化报错求解
- jdk1.5、1.6、1.7新特性详细介绍
- 超棒的java线程故事
- 设计模式之六大原则——接口隔离原则(ISP)
- RxJava学习(一)
- eclipse通过源码集成SVN插件
- 【转】JAVA字符串格式化-String.format()的使用--不错
- Struts的 action访问servlet API的三种方法
- ElasticSearch学习14_elasticsearch 口水篇(3)java客户端 - Jest
- Java相对路径读取文件
- 【java线程系列】java线程系列之线程间的交互wait()/notify()/notifyAll()及生产者与消费者模型
- 【java线程系列】java线程系列之线程间的交互wait()/notify()/notifyAll()及生产者与消费者模型
- Rxjava
- JAVAWEB实现数据库备份功能
- 给jdk写注释系列之jdk1.6容器(1):ArrayList源码解析
- Java实现代理模式(CGLIB)
- LeetCode之数组处理题java