1. 简单工厂的结构图
2. 简单工厂的基本代码
运算类Operation
public 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 double getResult(){
return 0;
}
}
加法运算类OperationAdd,继承自Operation
public class OperationAdd extends Operation {
@Override
public double getResult() {
double result = 0;
result = getNumberA() + getNumberB();
return result;
}
}
减法运算类OperationSub
public class OperationSub extends Operation {
@Override
public double getResult() {
double result = 0;
result = getNumberA() - getNumberB();
return result;
}
}
运算工厂类OperationFactory,创建运算对象。
public class OperationFactory {
public static Operation createOperaction(String operate) {
Operation oper = null;
if("+".equals(operate)){
oper = new OperationAdd();
}else if("-".equals(operate)){
oper = new OperationSub();
}
return oper;
}
}
客户端调用
public class ClientTest {
public static void main(String[] args) {
Operation oper = OperationFactory.createOperaction("-");
oper.setNumberA(8);
oper.setNumberB(6);
double result = oper.getResult();
System.out.println(result);
}
}
3. 说明
本示例运用到了面向对象的封装、继承、多态三大特性。运算类的运算结果方法是为封装,加法运算类继承自运算类是为继承,运算工厂类中根据传递进来的运算标志判断实例化加法运算类或减法运算类返回父类运算类的做法是为多态。