您的位置:首页 > 编程语言 > Java开发

简单工厂模式-Java篇

2016-04-26 15:29 405 查看
简单工厂模式就是考虑如何实例化对象的问题,就是说到底要实例化谁,将来会不会增加实例化对象,比如计算器类中增加开根元素,应该考虑用一个单独的类来创造实例的过程,这就是工厂。下面将利用计算器类举例,解释简单工厂模式:

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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: