实现计算器的功能
可维护
可复用【复制≠复用 编程的原则:用尽可能的办法去避免重复,让计算和显示分开,即让业务逻辑与界面逻辑分开,让耦合度下降,只有分离开,才可以达到容易维护或者扩展】
可扩展
灵活性好
【一】
Operation运算类:
客户端:
使用了封装,但是如果需要添加一个平方根运算,却需要加减乘除的运算都来参与,应该改为修改其中一个不影响另外的几个,增加运算算法也不影响其他代码。
【二】
Operation运算类(抽象类)
package factory;
public abstract class Operation {
public double numA;
public double numB;
public double getResult(){
return 0.0;
}
}
加法运算类:
package factory;
public class AddOperation extends Operation{
@Override
public double getResult() {
return numA+numB;
}
}
减法运算类:
package factory;
public class SubOperation extends Operation {
@Override
public double getResult() {
return numA-numB;
}
}
工厂类:
package factory;
public class Factory {
public static Operation getOperation(char ope){
switch(ope){
case '+':
return new AddOperation();
case '-':
return new SubOperation();
default:
throw new RuntimeException();
}
}
}
客户端:
package factory;
public class MainTest {
public static void main(String[] args) {
Operation operation = Factory.getOperation('+');
operation.numA = 1.0;
operation.numB = 2.0;
double test = operation.getResult();
System.out.println(test);
Operation operation1 = Factory.getOperation('-');
operation1.numA = 3.3;
operation1.numB = 1.0;
System.out.println(operation1.getResult());
}
}
如果需要增加复杂的运算,比如平方根,立方根,只要增加相应的运算子类,并修改工厂,在switch中增加分支即可。