设计模式3 简单工厂模式

简单工厂含义

简单工厂模式又称静态方法模式,可以将其理解为生产对象的一个类,称为工厂类。

解决的问题

将“类实例化的操作”与“使用对象的操作”分开,让使用者不用知道具体参数就可以实例化出所需要的“产品”类,从而避免了在客户端代码中显式指定,同时如果代码中多处使用到这个类,修改时就只在一个地方修改就可以了,达到了解耦的效果。

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;
   }
}

缺点

违背“开放关闭原则”,一旦添加新产品就不得不修改工厂类的逻辑,这样就会造成工厂逻辑过于复杂。

应用场景:

  1. 客户如果只知道传入工厂类的参数(用于确定实例化哪一个类的对象),对于如何创建对象的逻辑不关心时
  2. 当工厂类负责创建的对象(具体产品)比较少时
posted @ 2020-04-09 22:02  java学习小白  阅读(112)  评论(0编辑  收藏  举报