【设计模式】简单工厂模式

什么是简单工厂模式:

通过定义一个类来创建其他类的实例,被创建的实例通常都具有共同的父类。又称为静态工厂方法模式,属于类的创建型模式。

使用场景:

需要根据不同的Type处理不同的逻辑的地方,都可以使用(如直播中同一个消息有不同的消息类型,需要创建不同的处理方式等);把处理方式抽象成接口,工厂内部处理切换逻辑,更改时只需加上case和新类即可,不修改原来的逻辑;

举例说明:

简单工厂模式点实现计算器加减乘除的算法

public class Factory {
  public Operation createOperation(Operator operator) {
    Operation operation = null;
    switch (operator) {
      case ADD:
        operation = new AddOperation();
        break;
      case SUB:
        operation = new SubOperation();
        break;
      case MUL:
        operation = new MulOperation();
        break;
      case DIV:
        operation = new DivOperation();
        break;
    }
    return operation;
  }

  public enum Operator {
    ADD,
    SUB,
    MUL,
    DIV;
  }
}

项目中的应用:

消息推送: 不同的消息类型做不同的处理(打开App首页,跳转H5,跳转个人主页)

使用方法:

创建公共接口,提取各实例的通用处理方法;
创建各实例继承该接口,实现各自的处理逻辑;
创建工厂类,提供创建实例的方法,客户端传入类型参数,工厂类根据具体的类型创建不同的实例;

优点:

(1) 需要增加新的类型只需要增加新的实例类即可,工厂封装了具体的实现细节,逻辑清晰
(2)责任分离,符合单一职责原则,后期扩展性强;

缺点:

(1)工厂类的职责过大,每次增加新的类型需要修改工厂类,不符合开闭原则(对扩展开放,对修改关闭)
(2)当类型较多时,工厂类泛滥,难以管理(可以用抽象工厂解决)

你可能感兴趣的:(【设计模式】简单工厂模式)