最近抽空重新看起了设计模式,先从简单工厂设计模式开始写起。简单工厂设计模式,即将功能集封装起来提供给客户使用,具体里面实现细节不用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); } }在这里加减乘除算法不用去在意里面的计算逻辑也不用担心修改一个会影响其他计算方法。同时如果需要新增新的计算逻辑只要再新增新的实现类同时在工厂中添加一个新的'加工作坊'就好了。客户只需要知道计算这个方法不需要去在乎其他东西。