大话设计模式 读书笔记之 简单工厂模式

什么是简单工厂模式:

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

使用场景:

  1. 需要根据不同的Type处理不同的逻辑的地方,都可以使用(如直播中同一个消息有不同的消息类型,需要创建不同的处理方式等);
  2. 取代if-else(也就是effective java里面说的标签类,充满各种的if-else),当需求更改时,需要更改if-else里面的内容,扩展性差,而简单工厂模式,把处理方式抽象成接口,工厂内部处理切换逻辑,更改时只需加上case和新类即可,不修改原来的逻辑;

引用
Effective 第四章 类与接口

类层次优于标签类

举例说明:

需要做一个计算器,实现加减乘除的算法

以下是简单工厂模式点实现

public class FactoryDesign {
  public Operation createOperation(Operator operator) {// 这里可以优化成泛型或者Android里面的@IntDef
    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;
  }
}

项目中的应用:

  1. 直播中消息列表:一条消息不同的Type对应不同的处理逻辑和样式(警告,聊天,全局广播,礼物.....)
  2. 开启游戏:一个GameID对应不同的游戏fragment
  3. 消息推送,不同的消息类型做不同的处理(打开App首页,跳转H5,跳转个人主页)

使用方法:

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

优点:

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

缺点:

  1. 工厂类的职责过大,每次增加新的类型需要修改工厂类,不符合开闭原则(对扩展开放,对修改关闭)
  2. 当类型较多时,工厂类泛滥,难以管理(可以用抽象工厂解决)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,634评论 19 139
  • 设计模式基本原则 开放-封闭原则(OCP),是说软件实体(类、模块、函数等等)应该可以拓展,但是不可修改。开-闭原...
    西山薄凉阅读 9,341评论 3 14
  • 设计模式汇总 一、基础知识 1. 设计模式概述 定义:设计模式(Design Pattern)是一套被反复使用、多...
    MinoyJet阅读 9,386评论 1 15
  • 1.接口基础回顾 设计模式六大原则,其中依赖倒转原则,强调我们应该面向接口编程,那什么是接口?接口的作用? 接口如...
    孟婆汤不解渴阅读 4,286评论 0 3
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,978评论 18 399