实现一个计算器控制台程序
活字印刷
第一,要改,只需改要改之字,此为可维护
第二,这些字用完依然可用,此为可复用
第三,若要加字只需另刻再加入即可,此为可扩展
第四,可横排可竖排,此为灵活性好
复制VS复用 将计算和显示分开(即将业务逻辑和界面逻辑分开)
public class Operation{
public double getResult(double numberA, double numebrB, string operator){
double result=0;
switch(operator){
case "+":
result=numberA+numberB;
break;
case "-":
result=numberA-numberB;
break;
case "*":
result=numberA*numberB;
break;
case "/":
result=numberA/numberB;
break;
}
return result;
}
}
public class Caculator{ Scanner sr=new Scanner(System.in); double numberA, numberB; String operator; public static void main(String[] args){ System.out.println("请输入数字A“); numberA=sr.nextDouble(); System.out.println("请输入操作符”); operator=sr.nextLine(); System.out.println("请输入数字B"); numberB=sr.nextDouble(); double result=getResult(numberA,numberB,operator); System.out.println(result); } catch(Exception e){ } }
紧耦合和松耦合
更好的设计:写一个operation类,里面有getResult();
另写 加减乘除类 继承operation类
这样另加开根号运算时,就无需暴露加减乘除给对方看
简单工厂模式
如何去实例化对象
public class OperationFactory[
public static Operation createOperate(String operator){
Operation oper=null;
switch(operator){
case "+": oper=new OperationAdd(); break;
case "-": oper=new OperationSub(); break;
case "*": oper=new OperationMul(); break;
case "/": oper=new OperationDiv(); break;
}
return oper;
}
}