您的位置:首页 > 编程语言 > Java开发

Java版大话设计模式(一)---计算器---简单工厂模式

2018-01-17 08:54 337 查看
package dataStruct;

abstract class Operation {

protected double numberA = 0;

protected double numberB = 0;

public double getNumberA() {

return numberA;

}

public void setNumberA(double numberA) {

this.numberA = numberA;

}

public double getNumberB() {

return numberB;

}

public void setNumberB(double numberB) {

this.numberB = numberB;

}

//抽象方法在抽象类中只能声明,不能具体实现  

public abstract double getResult() throws Exception; 
}

class OperationAdd extends Operation {

@Override

public double getResult() {

return numberA+numberB;

}
}

class OperationSub extends Operation {

@Override

public double getResult() {

return numberA-numberB;

}
}

class OperationMul extends Operation {

@Override

public double getResult() {

return numberA*numberB;

}
}

class OperationDiv extends Operation {

@Override

public double getResult() throws Exception {

if(Double.doubleToLongBits(numberB) == Double.doubleToLongBits(0.0)) 

throw new Exception("除数不能为0");

return numberA/numberB;

}
}

//简单工厂模式类

class OperationFactory {

public static Operation createOperate(String operate) {

Operation operation = null;
switch(operate) {

case "+":

operation = new OperationAdd();

break;

case "-":

operation = new OperationSub();

break;

case "*":

operation = new OperationMul();

break;

case "/":

operation = new OperationDiv();

break;

}
return operation;

}
}

//客户端代码

public class Main  

{  
 public static void main(String[] args) throws Exception  {

   Operation ope = OperationFactory.createOperate("+");

   ope.setNumberA(20.2);

   ope.setNumberB(1.23);

   System.out.println(ope.getResult());
   }

}  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: