简单工厂模式:到底要实例化谁,将来会不会增加实例化的对象,比如计算器增加不同的运算是很容易变化的地方,应该考虑使用一个单独的类来做这个创造实例的过程,这就是简单工厂。使用switch判断具体实例化哪个实例。
// 简单工厂
public class Operation {
private Double number1;
private Double number2;
public Double getNumber1() {
return number1;
}
public void setNumber1(Double number1) {
this.number1 = number1;
}
public Double getNumber2() {
return number2;
}
public void setNumber2(Double number2) {
this.number2 = number2;
}
public Double getResult() {
double result=0;
return result;
}
}
// 加法工厂
public class OperationAdd extends Operation {
@Override
public Double getResult() {
Double result=0d;
result=getNumber1()+getNumber2();
return result;
}
}
// 除法工厂
public class OperationDiv extends Operation {
@Override
public Double getResult() {
Double result=0d;
result=getNumber1()/getNumber2();
return result;
}
}
// 乘法工厂
public class OperationMul extends Operation {
@Override
public Double getResult() {
Double result=0d;
result=getNumber1()*getNumber2();
return result;
}
}
// 减法工厂
public class OperationSub extends Operation {
@Override
public Double getResult() {
Double result=0d;
result=getNumber1()-getNumber2();
return result;
}
}
// 测试
public class Test {
public static void main(String[] args) {
System.out.println("加法工厂测试");
OperationAdd operationAdd=new OperationAdd();
operationAdd.setNumber1(Double.valueOf(1));
operationAdd.setNumber2(Double.valueOf(1));
Double addResult = operationAdd.getResult();
System.out.println(addResult);
System.out.println("减法工厂测试");
OperationSub operationSub=new OperationSub();
operationSub.setNumber1(Double.valueOf(2));
operationSub.setNumber2(Double.valueOf(1));
Double subResult = operationSub.getResult();
System.out.println(subResult);
System.out.println("乘法工厂测试");
OperationMul operationMul=new OperationMul();
operationMul.setNumber1(Double.valueOf(2));
operationMul.setNumber2(Double.valueOf(1));
Double mulResult = operationMul.getResult();
System.out.println(mulResult);
System.out.println("减法工厂测试");
OperationDiv operationDiv=new OperationDiv();
operationDiv.setNumber1(Double.valueOf(2));
operationDiv.setNumber2(Double.valueOf(1));
Double divResult = operationMul.getResult();
System.out.println(divResult);
}
}
`