简单工厂含义
简单工厂模式又称静态方法模式,可以将其理解为生产对象的一个类,称为工厂类。
解决的问题
将“类实例化的操作”与“使用对象的操作”分开,让使用者不用知道具体参数就可以实例化出所需要的“产品”类,从而避免了在客户端代码中显式指定,同时如果代码中多处使用到这个类,修改时就只在一个地方修改就可以了,达到了解耦的效果。
UML
代码实现
抽象计算类
public interface Calculation {
double calculate(double num1,double num2);
}
具体计算类--加法类
public class PlusCalculation implements Calculation{
@Override
public double calculate(double num1, double num2) {
return num1+num2;
}
}
具体计算类--减法类
public class SubCalculation implements Calculation {
@Override
public double calculate(double num1, double num2) {
return num1-num2;
}
}
工厂类
public class CalculationFactory {
public static Calculation create(char ch){
Calculation calculation= null;
switch (ch){
case '+':calculation = new PlusCalculation();break;
case '-':calculation = new SubCalculation();break;
}
return calculation;
}
}
缺点
违背“开放关闭原则”,一旦添加新产品就不得不修改工厂类的逻辑,这样就会造成工厂逻辑过于复杂。
应用场景:
- 客户如果只知道传入工厂类的参数(用于确定实例化哪一个类的对象),对于如何创建对象的逻辑不关心时
- 当工厂类负责创建的对象(具体产品)比较少时