简单工厂模式
1. 简单工厂模式是什么
简单工厂模式就是用一个专门的工厂类来产生你所需要的类。运用工厂类,可以把比较复杂的创建类的过程封装在工厂类的内部,这样不用影响客户端代码的可读性,同时也易于维护。
2. 一个简单的例子
UML图示如下
运算类的java代码如下
public abstract class Operation {
private double numberA = 0;
private 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();
}
public class OperationDiv extends Operation {
@Override
public double getResult() {
double result = 0;
if (getNumberB()!=0)
result = getNumberA()/getNumberB();
else{
System.out.println("除数不能为0");
System.exit(0);
}
return result;
}
}
public class OperationMul extends Operation {
@Override
public double getResult() {
double result = 0;
result = getNumberA() * getNumberB();
return result;
}
}
public class OperationSub extends Operation {
@Override
public double getResult() {
double result = 0;
result = getNumberA() - getNumberB();
return result;
}
}
public class OperationAdd extends Operation {
@Override
public double getResult() {
double result = 0;
result = getNumberA() + getNumberB();
return result;
}
}
产生类对象的工厂如下
public class OperationFactory {
public static Operation createOperation(String operate) {
Operation rs = null;
switch (operate) {
case "+" : rs = new OperationAdd();break;
case "-" : rs = new OperationSub();break;
case "*" : rs = new OperationMul();break;
case "/" : rs = new OperationDiv();break;
}
return rs;
}
}
客户端测试代码如下
public class Test {
public static void main(String[] args){
Operation oper = OperationFactory.createOperation("+");
oper.setNumberA(10);
oper.setNumberB(20);
double res = oper.getResult();
System.out.println(res);
}
}