大话设计模式之简单工厂设计模式观后感

最近抽空重新看起了设计模式,先从简单工厂设计模式开始写起。简单工厂设计模式,即将功能集封装起来提供给客户使用,具体里面实现细节不用care。以下是我利用计算器功能实现的代码,如果有错误希望大家一起来帮我更正,在此小shine先谢谢各位。

首先是计算接口

public interface Operation {
    double cal(double num1, double num2) throws OperationException;
}
其次是加减乘除算法实现类

public class Multiplication implements Operation {
    @Override
    public double cal(double num1, double num2) throws OperationException {
        return num1*num2;
    }
}
public class Subtraction implements Operation {
    @Override
    public double cal(double num1, double num2) {
        return num1-num2;
    }
}
public class Addition implements Operation {
    @Override
    public double cal(double num1, double num2) {
        return num1+num2;
    }
}

public class Division implements Operation {
    @Override
    public double cal(double num1, double num2) throws OperationException {
        if(0==num2){
            throw new OperationException("负数不能为0");
        }
        return num1/num2;
    }
}
然后创建一个简单工厂计算类去实现计算细节

public class CalculatorFactory {
    public double cal(double num1,double num2,char character) throws OperationException {
        Operation operation;

        switch (character){
            case '*':
                operation = new Multiplication();
                break;
            case '/':
                operation = new Division();
                break;
            case '+':
                operation = new Addition();
                break;
            case '-':
                operation = new Subtraction();
                break;
            default:
                throw new OperationException("运算符不合法");
        }

        return operation.cal(num1,num2);
    }
}
在这里加减乘除算法不用去在意里面的计算逻辑也不用担心修改一个会影响其他计算方法。同时如果需要新增新的计算逻辑只要再新增新的实现类同时在工厂中添加一个新的'加工作坊'就好了。客户只需要知道计算这个方法不需要去在乎其他东西。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值