美文网首页
工厂方法模式

工厂方法模式

作者: Exception_22bf | 来源:发表于2020-10-30 16:53 被阅读0次
  • 工厂方法模式是一种创建型设计模式,在父类中提供一个创建对象得方法,允许子类决定实列化对象的类型。这种设计模式也是java开发中最常见的一种模式,它的主要意图是定义一个创建对象的接口,让其子类自己决定实列化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。
  • 模拟创建汽车功能:在此场景中,我们可以创建奔驰,宝马,凯迪拉克等等。
    • 这里我们先考虑用一坨坨伪代码实现
public void buildCar(Integer type) {
  if(type.intvalue() == 1) {
      // 创建奔驰
  }
  if(type.intvalue() == 2) {
      // 创建宝马
  }
  if(type.intvalue() == 3) {
      // 创建凯迪拉克
  }
......
}
  • 如上就是使用ifelse非常直接写出来业务需求,这样的代码在经历过几次迭代后将变得非常难以维护,下面我们尝试用工厂方法模式进行重构。
// 先定义一个创建汽车接口
public interface BuildCar {
  // 创建车的抽象方法
  void build();
}
// 定义创建奔驰车的类
public class BcCar implements BuildCar {
      void build() {
        // 创建奔驰的具体逻辑
        ...
     }
}
// 定义创建宝马车的类
public class BmCar implements BuildCar {
      void build() {
        // 创建宝马的具体逻辑
        ...
     }
}
// 定义创建凯迪拉克车的类
public class KdlkCar implements BuildCar {
      void build() {
        // 创建凯迪拉克的具体逻辑
        ...
     }
}
// 创建工厂
public class CarFactory {
  public BuildCar getBuildCar(Integer type) {
       if(type.intvalue() == 1) {
          return new BcCar();
      }
      if(type.intvalue() == 2) {
          return new BmCar();
      }
      if(type.intvalue() == 3) {
          return new KdlkCar();
      }
    } 
}
  • 当我们使用时:
CarFactory carFactory = new CarFactory ();
// 使用工厂类创建奔驰车
carFactory .getBuildCar(1).build();
后续同理
......
  • 这样我们将每个单独的发奖逻辑和主业务剥离出来,满足单一职责,不同的发奖逻辑在属于自己单独的类中实现,满足开闭原则。但这样一来也有一些问题,比如有非常多的奖品类型,那么实现的子类会极速扩张。因此也需要其他的设计模式进行优化,这些会在后续的设计模式中涉及到。

相关文章

  • 设计模式-3种工厂模式

    工厂模式包括:简单工厂模式,工厂方法模式,抽象工厂模式 简单工厂模式 工厂方法根据参数直接创建实例:工厂->产品 ...

  • 设计模式-工厂模式

    工厂模式概念 实例化对象,用工厂方法代替new操作。工厂模式包括工厂方法模式和抽象工厂模式。抽象工厂模式是工厂模式...

  • 设计模式-工厂方法模式

    1、工厂方法模式(Factory Method) 工厂方法模式分为三种: 普通工厂模式 多个工厂模式 静态工厂模式...

  • 设计模式 工厂模式

    工厂模式 工厂模式三大类1、简单工厂模式(静态工厂方法模式)2、工厂方法模式3、抽象工厂模式(Kit模式) 简单工...

  • python设计模式 - 工厂模式之工厂方法

    python 环境 工厂方法模式简介 工厂方法模式Factory Method,又称多态性工厂模式。在工厂方法模式...

  • 第一章2.0工厂- 基础类准备

    2.1工厂-简单工厂模式2.2工厂-工厂方法模式2.3工厂-抽象工厂模式

  • 建造模式

    包括:简单工厂、工厂方法、抽象工厂、单例模式、多例模式、建造模式、原始原型模式。 简单工厂:又名静态工厂方法模式,...

  • PHP-浅谈单例模式和工厂模式

    PHP中常用的设计模式有单例模式、工厂模式(简单工厂模式、工厂方法模式和抽象工厂方法模式)、适配模式、策略模式。 ...

  • 设计模式学习--工厂方法模式

    模式定义 工厂方法模式又称工厂模式,也叫虚拟构造器模式或者多态工厂模式,它属于类创建型模式。在工厂方法模式中,工厂...

  • 五分钟精通设计模式(三)之工厂方法模式

    工厂方法模式分为三种: 普通工厂方法模式、多个工厂方法模式、静态工厂方法模式 废话不多说,下面直奔主题,实现步骤:...

网友评论

      本文标题:工厂方法模式

      本文链接:https://www.haomeiwen.com/subject/npjdvktx.html