1. 简单工厂模式
1.1 概念
简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。
通俗来的说,到底要实例化谁,将来会不会增加实例化的对象,这就是简单工厂模式需要解决的问题。
1.2 Java实现代码
用简单工厂模式实现一个计算器功能代码:
public class OperationFactory{
public static Operation createOpe(String operate){
Operation oper = null;
switch(operate){
case "+":
oper = new Add();
break;
case "-":
oper = new Sub();
break;
case "*":
oper = new Mul();
break;
case "/":
oper = new Div();
break;
}
return oper;
}
}
客户端代码
Operation oper = OperationFacotry.createOperate(strOperate);
double result = oper.getResult(numberA,numberB)
Operation运算类:
public abstract class Operation{
public double getResult(double numberA,double numberB){
return 0d;
}
}
加减乘除类:
public class Add extends Operation{
public double getResult(double numberA,double numberB){
return numberA+numberB;
}
}
public class Sub extends Operation{
public double getResult(double numberA,double numberB){
return numberA-numberB;
}
}
public class Mul extends Operation{
public double getResult(double numberA,double numberB){
return numberA*numberB;
}
}
public class Div extends Operation{
public double getResult(double numberA,double numberB){
if(numberB==0){
System.out.println("除数不能为0");
throw new ArithmeticalException();
}
return numberA/numberB;
}
}
1.3 UML类图
1.4 补充
- 若需要更改加法运算,只需要改Add类
- 若需要增加各种复杂运算,比如平方根、立方根、自然对数等,则需要增加相应的运算子类以及修改运算类工厂,在switch中增加分支