国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JS設(shè)計(jì)模式--Factory(工廠)模式

UsherChen / 3168人閱讀

摘要:對解耦是很有用對。設(shè)計(jì)模式系列文章設(shè)計(jì)模式之觀察者模式發(fā)布訂閱模式設(shè)計(jì)模式之工廠模式設(shè)計(jì)模式之單例模式設(shè)計(jì)模式之外觀模式設(shè)計(jì)模式之模塊模式揭示模塊模式

工廠模式

提供一個(gè)通用的接口來創(chuàng)建對象

示例

  //Car構(gòu)造函數(shù)
  function Car(option) {
    this.doors = option.doors || 4
    this.color = option.color || "red"
    this.state = option.state || "brand new"
  }

  //Truck構(gòu)造函數(shù)
  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)
  }

  //創(chuàng)建生成汽車的工廠實(shí)例
  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"}
適用場景

當(dāng)對象或組建設(shè)置涉及高復(fù)雜性時(shí)

當(dāng)需要根據(jù)所在當(dāng)不同環(huán)境輕松生成對象當(dāng)不同實(shí)例時(shí)

當(dāng)處理很多共享相同屬性當(dāng)小型對象或組件時(shí)

在編寫只需要滿足一個(gè)API契約(亦稱鴨子類型)的其他對象的實(shí)例對象時(shí)。對解耦是很有用對。

JS設(shè)計(jì)模式系列文章

JS設(shè)計(jì)模式之Obeserver(觀察者)模式、Publish/Subscribe(發(fā)布/訂閱)模式
JS設(shè)計(jì)模式之Factory(工廠)模式
JS設(shè)計(jì)模式之Singleton(單例)模式
JS設(shè)計(jì)模式之Facade(外觀)模式
JS設(shè)計(jì)模式之Module(模塊)模式、Revealing Module(揭示模塊)模式

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/109119.html

相關(guān)文章

  • JS 工廠模式

    摘要:工廠模式定義一個(gè)用于創(chuàng)建對象的接口,這個(gè)接口由子類決定實(shí)例化哪一個(gè)類。實(shí)現(xiàn)一個(gè)簡單的實(shí)現(xiàn),使用如果使用對象屬性來實(shí)現(xiàn)以下例子中的工廠方法接受在運(yùn)行時(shí)以字符串形式指定的類型,然后創(chuàng)建并返回所請求類型的對象。 1. 簡介 工廠模式的目的是為了創(chuàng)建對象,它通常在類或者類的靜態(tài)方法中實(shí)現(xiàn),具有以下目標(biāo): 當(dāng)創(chuàng)建相似對象時(shí)執(zhí)行重復(fù)操作 當(dāng)編譯時(shí)不知道具體類型的情況下,為工廠客戶提供一個(gè)創(chuàng)建對象...

    zhangke3016 評論0 收藏0
  • JS設(shè)計(jì)模式-工廠模式

    摘要:工廠模式是最常用的實(shí)例化對象模式,是用工廠方法代替操作的一種模式原文鏈接簡單工廠模式優(yōu)點(diǎn)能解決多個(gè)相似的問題缺點(diǎn)不能識別對象的類型工廠模式是為了解決多個(gè)類似對象聲明問題,也就是重復(fù)實(shí)例化對象的問題復(fù)雜工廠模式將其成員對象的實(shí)例化推遲到子類中 工廠模式是最常用的實(shí)例化對象模式,是用工廠方法代替new操作的一種模式 原文鏈接 簡單工廠模式 優(yōu)點(diǎn):能解決多個(gè)相似的問題 缺點(diǎn):不能識別對象的...

    sarva 評論0 收藏0
  • js設(shè)計(jì)模式(二)-工廠模式

    摘要:前言設(shè)計(jì)模式填坑系列,緊接前文距離上次寫筆記又過去了一個(gè)多月,我也不知道怎么加班加著加著就一個(gè)月了正文定義工廠模式是指提供一個(gè)創(chuàng)建對象的接口而不保留具體的創(chuàng)建邏輯,可以根據(jù)輸入類型創(chuàng)建對象。 前言 設(shè)計(jì)模式填坑系列,緊接前文(距離上次寫筆記又過去了一個(gè)多月,我也不知道怎么加班加著加著就一個(gè)月了-_-!) 正文 定義 工廠模式是指提供一個(gè)創(chuàng)建對象的接口而不保留具體的創(chuàng)建邏輯,可以根據(jù)輸入...

    figofuture 評論0 收藏0
  • JS每日一題:設(shè)計(jì)模式-如何理解工廠模式?

    摘要:期設(shè)計(jì)模式如何理解工廠模式定義創(chuàng)建對象的接口,讓子類決定實(shí)例化哪個(gè)類。適用場景需要根據(jù)不同參數(shù)產(chǎn)生不同實(shí)例,這些實(shí)例都有相同的行為這時(shí)候我們可以使用工廠模式,簡化實(shí)現(xiàn)的過程,同時(shí)也可以減少每種對象所需的代碼量。 20190408期 設(shè)計(jì)模式-如何理解工廠模式? 定義: 創(chuàng)建對象的接口,讓子類決定實(shí)例化哪個(gè)類。工廠方法將類的實(shí)例化延遲到子類,而子類可以重寫接口方法以便創(chuàng)建的時(shí)候指定自己的...

    kevin 評論0 收藏0
  • JS工廠模式

    摘要:工廠模式定義一個(gè)用于創(chuàng)建對象的接口,這個(gè)接口由子類決定實(shí)例化哪一個(gè)類。如果不好理解,我們舉個(gè)實(shí)際一點(diǎn)的例子。假設(shè)我們要在一個(gè)頁面上插入一些元素,但這些元素不確定,可能是圖片,可能是鏈接,可能是文本。 工廠模式定義:一個(gè)用于創(chuàng)建對象的接口,這個(gè)接口由子類決定實(shí)例化哪一個(gè)類。該模式使一個(gè)類的實(shí)例化延遲到了子類。而子類可以重寫接口方法以便創(chuàng)建的時(shí)候指定自己的對象類型。 看不懂?沒關(guān)系,先看看...

    maybe_009 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<