大话设计模式 第一章 简单工厂模式

实现一个计算器控制台程序

活字印刷

第一,要改,只需改要改之字,此为可维护

第二,这些字用完依然可用,此为可复用

第三,若要加字只需另刻再加入即可,此为可扩展

第四,可横排可竖排,此为灵活性好


复制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;

}

}



 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值