用工厂模式实现简单的计算器
需求:实现简单的计算器(完成加减乘除的运算)
分析:首先进行业务的分离封装(业务逻辑和界面操作逻辑分开封装)
public class TestFactoryModel {
// 界面操作
@Test
public void test(){
Operation oper;
oper = createOperation("/");
oper.set_numberA(2);
oper.set_numberB(1);
double result = oper.getResut();
System.out.println(result);
}
// 业务逻辑(工厂)
public Operation createOperation(String operate){
Operation operation = null;
switch (operate){
case "+":
operation = new OpreationAdd();
break;
case "-":
operation = new OpreationSub();
break;
case "*":
operation = new OpreationMul();
break;
case "/":
operation = new OpreationDiv();
break;
default:
throw new RuntimeException("不支持该运算");
}
return operation;
}
// 运算模块 可拓展(目前有 :加减乘除)
// 加法
public class OpreationAdd extends Operation{
@Override
public double getResut(){
double result = 0;
result = get_numberA() + get_numberB();
return result;
}
}
// 减法
public class OpreationSub extends Operation{
@Override
public double getResut(){
double result = 0;
result = get_numberA()- get_numberB();
return result;
}
}
// 乘法
public class OpreationMul extends Operation{
@Override
public double getResut(){
double result = 0;
result = get_numberA()* get_numberB();
return result;
}
}
// 除法
public class OpreationDiv extends Operation{
@Override
public double getResut(){
double result = 0;
if(get_numberA() == 0){
throw new RuntimeException("被除数不能为0");
}
result = get_numberA()/ get_numberB();
return result;
}
}
// 实体类
public class Operation {
private double _numberA = 0;
private double _numberB = 0;
public double getResut(){
double result = 0;
return result;
}
public double get_numberA() {
return _numberA;
}
public void set_numberA(double _numberA) {
this._numberA = _numberA;
}
public double get_numberB() {
return _numberB;
}
public void set_numberB(double _numberB) {
this._numberB = _numberB;
}
}
}