题目:
请使用工厂方法模式实现一个计算器控制台应用程序,包含加、减、乘、除四种运算,要求输入2个数和运算符,输出相应的结果。并画出相应的UML类图?
类图:
代码:
abstract class Operation {
private double numberA, numberB;
public double getNumerA() {
return numberA;
}
public void setNumberA(double numberA) {
this.numberA = numberA;
}
public double getNumerB() {
return numberB;
}
public void setNumberB(double numberB) {
this.numberB = numberB;
}
public abstract double GetResult();
};
class OperationAdd extends Operation {
public double GetResult() {
return getNumerA() + getNumerB();
}
};
class OperationSub extends Operation {
public double GetResult() {
return getNumerA() - getNumerB();
}
};
class OperationMul extends Operation {
public double GetResult() {
return getNumerA() * getNumerB();
}
};
class OperationDiv extends Operation {
public double GetResult() {
return getNumerA() / getNumerB();
}
};
class OperationSqrt extends Operation {
public double GetResult() {
return Math.sqrt(getNumerA());
}
};
interface FactoryOper {
Operation createOperation();
};
class AddFactory implements FactoryOper {
public Operation createOperation() {
return new OperationAdd();
}
};
class SubFactory implements FactoryOper {
public Operation createOperation() {
return new OperationSub();
}
};
class MulFactory implements FactoryOper {
public Operation createOperation() {
return new OperationMul();
}
};
class DivFactory implements FactoryOper {
public Operation createOperation() {
return new OperationDiv();
}
};
class SqrtFactory implements FactoryOper {
public Operation createOperation() {
return new OperationSqrt();
}
};
public class FactoryMethod {
public static void main(String[] args){
FactoryOper operFactory = new MulFactory();
Operation oper = operFactory.createOperation();
oper.setNumberA(4);
oper.setNumberB(2);
double result = oper.GetResult();
System.out.println("结果为"+result);
}
}
结果: