父類
public abstract class Operator {
private double d1;
private double d2;
public double getD1() {
return d1;
}
public void setD1(double d1) {
this.d1 = d1;
}
public double getD2() {
return d2;
}
public void setD2(double d2) {
this.d2 = d2;
}
public abstract double getResult();
}
加法類
public class OperatorAdd extends Operator{
@Override
public double getResult() {
return this.getD1() + this.getD2();
}
}
減法類
public class OperatorSub extends Operator{
@Override
public double getResult() {
return this.getD1() - this.getD2();
}
}
乘法類
public class OperatorMul extends Operator{
@Override
public double getResult() {
return this.getD1() * this.getD2();
}
}
除法類
public class OperatorDiv extends Operator{
@Override
public double getResult() {
return this.getD1() / this.getD2();
}
}
簡單工廠類
public class SimpleFactory {
private Operator operator;
public Operator createOperator(String type){
switch (type){
case "+":
operator = new OperatorAdd();
break;
case "-":
operator = new OperatorSub();
break;
case "*":
operator = new OperatorMul();
break;
case "/":
operator = new OperatorDiv();
break;
default:
throw new RuntimeException("暫不支持");
}
return operator;
}
}
使用
public static void main(String[] args) {
SimpleFactory factory = new SimpleFactory();
Operator operator = factory.createOperator("+");
operator.setD1(123);
operator.setD2(111);
System.out.println(operator.getResult());
}
輸出
234.0