根据面向对象的方法的两大特性封装和继承
封装:是为了把不同功能分开,容易修改
继承:是为了方便不修改原有代码的情况下,扩展(添加功能)
那么一个简单的计算器代码如下
abstract class Operation
{
private double numberA = 0;
private double numberB = 0;
public void setNumberA(double numberA){
this.numberA = numberA;
}
public double getNumberA(){
return numberA;
}
public void setNumberB(double numberB){
this.numberB = numberB;
}
public double getNumberB(){
return numberB;
}
public abstract double getResult();
}
public class OperationAdd extends Operation{
public double getResult(){
double result = 0;
result = getNumberA() + getNumberB();
return result;
}
}
public class OperationSub extends Operation{
public double getResult(){
double result = 0;
result = getNumberA() - getNumberB();
return result;
}
}
public class OperationMul extends Operation{
public double getResult(){
double result = 0;
result = getNumberA() * getNumberB();
return result;
}
}
用简单工厂模式根据不同的输入实例化需要用到的类、
一个简单的工厂类
public class OperationFactory {
public static Operation createOperate(char operator){
Operation oper = null;
switch (operator){
case '+':
oper = new OperationAdd();
break;
case '-':
oper = new OperationSub();
break;
case '*':
oper = new OperationMul();
break;
}
return oper;
}
}