package dataStruct;
abstract class Operation {
class OperationAdd extends Operation {
class OperationSub extends Operation {
class OperationMul extends Operation {
class OperationDiv extends Operation {
//简单工厂模式类
class OperationFactory {
//客户端代码
public class Main
{
public static void main(String[] args) throws Exception {
}
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());
}