资讯专栏INFORMATION COLUMN

JS设计模式--Factory(工厂)模式

UsherChen / 3033人阅读

摘要:对解耦是很有用对。设计模式系列文章设计模式之观察者模式发布订阅模式设计模式之工厂模式设计模式之单例模式设计模式之外观模式设计模式之模块模式揭示模块模式

工厂模式

提供一个通用的接口来创建对象

示例

  //Car构造函数
  function Car(option) {
    this.doors = option.doors || 4
    this.color = option.color || "red"
    this.state = option.state || "brand new"
  }

  //Truck构造函数
  function Truck(option) {
    this.color = option.color || "blue"
    this.wheelSize = option.wheelSize || "large"
    this.state = option.state || "used"
  }

  //Vehicle工厂
  function VehicleFactory() {}

  VehicleFactory.prototype.vehicleClass = Car
  VehicleFactory.prototype.createVehicle = function(option) {
    if(option.vehicleType == "car") {
      this.vehicleClass = Car
    }else {
      this.vehicleClass = Truck
    }

    return new this.vehicleClass(option)
  }

  //创建生成汽车的工厂实例
  var carFactory = new VehicleFactory()
  var car = carFactory.createVehicle({
    vehicleType: "car",
    color: "yellow",
    doors: 6
  })

  console.log(car instanceof Car)
  console.log(car)
  //true
  //Car {doors: 6, color: "yellow", state: "brand new"}

  var movingTruck = carFactory.createVehicle({
    vehicleType: "truck",
    color: "red",
    state: "like new",
    wheelSize: "small"
  })

  console.log(movingTruck instanceof Truck)
  console.log(movingTruck)
  //true
  //Truck {color: "red", state: "like new", wheelSize: "small"}
适用场景

当对象或组建设置涉及高复杂性时

当需要根据所在当不同环境轻松生成对象当不同实例时

当处理很多共享相同属性当小型对象或组件时

在编写只需要满足一个API契约(亦称鸭子类型)的其他对象的实例对象时。对解耦是很有用对。

JS设计模式系列文章

JS设计模式之Obeserver(观察者)模式、Publish/Subscribe(发布/订阅)模式
JS设计模式之Factory(工厂)模式
JS设计模式之Singleton(单例)模式
JS设计模式之Facade(外观)模式
JS设计模式之Module(模块)模式、Revealing Module(揭示模块)模式

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/109119.html

相关文章

  • JS 工厂模式

    摘要:工厂模式定义一个用于创建对象的接口,这个接口由子类决定实例化哪一个类。实现一个简单的实现,使用如果使用对象属性来实现以下例子中的工厂方法接受在运行时以字符串形式指定的类型,然后创建并返回所请求类型的对象。 1. 简介 工厂模式的目的是为了创建对象,它通常在类或者类的静态方法中实现,具有以下目标: 当创建相似对象时执行重复操作 当编译时不知道具体类型的情况下,为工厂客户提供一个创建对象...

    zhangke3016 评论0 收藏0
  • JS设计模式-工厂模式

    摘要:工厂模式是最常用的实例化对象模式,是用工厂方法代替操作的一种模式原文链接简单工厂模式优点能解决多个相似的问题缺点不能识别对象的类型工厂模式是为了解决多个类似对象声明问题,也就是重复实例化对象的问题复杂工厂模式将其成员对象的实例化推迟到子类中 工厂模式是最常用的实例化对象模式,是用工厂方法代替new操作的一种模式 原文链接 简单工厂模式 优点:能解决多个相似的问题 缺点:不能识别对象的...

    sarva 评论0 收藏0
  • js设计模式(二)-工厂模式

    摘要:前言设计模式填坑系列,紧接前文距离上次写笔记又过去了一个多月,我也不知道怎么加班加着加着就一个月了正文定义工厂模式是指提供一个创建对象的接口而不保留具体的创建逻辑,可以根据输入类型创建对象。 前言 设计模式填坑系列,紧接前文(距离上次写笔记又过去了一个多月,我也不知道怎么加班加着加着就一个月了-_-!) 正文 定义 工厂模式是指提供一个创建对象的接口而不保留具体的创建逻辑,可以根据输入...

    figofuture 评论0 收藏0
  • JS每日一题:设计模式-如何理解工厂模式?

    摘要:期设计模式如何理解工厂模式定义创建对象的接口,让子类决定实例化哪个类。适用场景需要根据不同参数产生不同实例,这些实例都有相同的行为这时候我们可以使用工厂模式,简化实现的过程,同时也可以减少每种对象所需的代码量。 20190408期 设计模式-如何理解工厂模式? 定义: 创建对象的接口,让子类决定实例化哪个类。工厂方法将类的实例化延迟到子类,而子类可以重写接口方法以便创建的时候指定自己的...

    kevin 评论0 收藏0
  • JS工厂模式

    摘要:工厂模式定义一个用于创建对象的接口,这个接口由子类决定实例化哪一个类。如果不好理解,我们举个实际一点的例子。假设我们要在一个页面上插入一些元素,但这些元素不确定,可能是图片,可能是链接,可能是文本。 工厂模式定义:一个用于创建对象的接口,这个接口由子类决定实例化哪一个类。该模式使一个类的实例化延迟到了子类。而子类可以重写接口方法以便创建的时候指定自己的对象类型。 看不懂?没关系,先看看...

    maybe_009 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<