1、定义
用一个单独的类来做这个创造实例的过程,这就是工厂。
2、使用场景
加减乘除运算封装
3、代码结构UML图
简单工厂类:实例工厂类;
运算类:运算操作抽象类;
加、减、乘、除法类:具体的运算类。
4、类的实现
(1)、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() {
double result = 0;
return result;
}
}
(2)、OperationFactory(工厂类)
public class OperationFactory {
public static Operation createOperate(String operate) {
Operation operation = null;
switch (operate) {
case "+":
operation = new OperationAdd();
break;
case "-":
operation = new OperationSub();
break;
case "*":
operation = new OperationMul();
break;
case "/":
operation = new OperationDiv();
break;
default:
break;
}
return operation;
}
}
(3)、OperationAdd、OperationSub、OperationMul、OperationDiv(具体运算类)
public class OperationAdd 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 OperationMul extends Operation {
@Override
public double getResult() {
double result = 0;
result = getNumberA() * getNumberB();
return result;
}
}
public class OperationDiv extends Operation {
@Override
public double getResult() {
double result = getNumberA() / getNumberB();
return result;
}
}
5、客户端调用
public static void main(String[] args) {
Operation oper = OperationFactory.createOperate("+");
oper.setNumberA(1);
oper.setNumberB(1);
double result = oper.getResult();
System.out.println("输出结果:" + result);
}
输出:
6、总结
工厂模式比较简单,主要是实例集中创建,采用静态方法调用。
参考:《大话设计模式》