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

資訊專欄INFORMATION COLUMN

JavaScript-創(chuàng)建性設(shè)計(jì)模式

imccl / 1349人閱讀

摘要:即把構(gòu)造函數(shù)的原型指向某個(gè)實(shí)例,所有構(gòu)造函數(shù)的實(shí)例對(duì)象都共享原型中屬性和方法。

工廠方法模式

定義:通過(guò)對(duì)產(chǎn)品類的抽象使其創(chuàng)建業(yè)務(wù)主要用于創(chuàng)建多類實(shí)例
即:再構(gòu)造函數(shù)中創(chuàng)建指定類型的實(shí)例,原型屬性方法中定義創(chuàng)建過(guò)程
算法骨架:

  var Factory = function(type, content) {
    if (this instanceof Factory) {
      return this[type](cotent)
    } else {
      return (new Factory([type](content)))
    }
  }
  Factory.prototype.type1 = function(content) {
  }

使用場(chǎng)景:需要?jiǎng)?chuàng)建大量對(duì)象,對(duì)象間可以分類合并(相似度高)

建造者模式

定義:將一個(gè)復(fù)雜對(duì)象的構(gòu)建與表示分離,同樣的構(gòu)建過(guò)程可以創(chuàng)建不同的表示。
即:把存在變化的部分從大對(duì)象里抽出來(lái),在構(gòu)建過(guò)程中傳入?yún)?shù)控制變化。
算法骨架:

  var Builder = function(arg1, args2...) {
    var entity = {};
    entity.part1 = new Part1(arg1);
    entity.part2 = new Part2(args2);
    return entity
  }
  var Part1 = function(arg1) {
    switch (arg1) {
      case ...
    }
  }

使用場(chǎng)景:一個(gè)對(duì)象的某一部分易變就可通過(guò)建造者模式抽象出來(lái),這樣多帶帶維護(hù)易變部分。

原型模式

定義:用原型實(shí)例指向創(chuàng)建對(duì)象的類,使用于創(chuàng)建新的對(duì)象的類共享原型實(shí)例的屬性和方法。
即:把構(gòu)造函數(shù)的原型指向某個(gè)實(shí)例,所有構(gòu)造函數(shù)的實(shí)例對(duì)象都共享原型中屬性和方法。
模式骨架1:

var ProConstructor = function(name) { // 原型對(duì)象對(duì)應(yīng)的構(gòu)造函數(shù)
  this.name = name
}
ProConstructor.prototype.walk = function() { // 原型對(duì)象中的方法

}
var InsContructor = function(name) { // 對(duì)象實(shí)例對(duì)應(yīng)的構(gòu)造函數(shù)
  ProConstructor.call(this, name) // 構(gòu)造函數(shù)繼承, 復(fù)制一些屬性,這些屬性值每個(gè)對(duì)象不一樣
}
InsContructor.prototype = new ProConstructor(); // 原型繼承, 將耗時(shí)長(zhǎng)、每個(gè)對(duì)象都又這個(gè)值的屬性和方法通過(guò)原型繼承

模式骨架2:

var ExtendPrototype = function(){
  var F = function(){},
  args = auguments,
  len = args.length;
  for (var i = 0; i

使用場(chǎng)景:首先時(shí)一個(gè)對(duì)象需要被多次創(chuàng)建(創(chuàng)建一次的化原型模式?jīng)]有優(yōu)越感),然后就是每次創(chuàng)建的對(duì)象有差異(沒(méi)有差異的話用單例模式多好),從上面可以看出原型模式的比普通的創(chuàng)建的好處在于將可復(fù)用的、耗時(shí)的的邏輯放在構(gòu)造函數(shù)的原型里,而將簡(jiǎn)單差異化的放在構(gòu)造函數(shù)里,這樣不僅省去了創(chuàng)建的步驟而且原型對(duì)象在內(nèi)存中還被共享也就是省內(nèi)存,這樣就能創(chuàng)建很多相同或者相似的對(duì)象,而模式骨架2的特點(diǎn)在于對(duì)普通對(duì)象的繼承,比較常見(jiàn)

單例模式

定義:是只允許實(shí)例化一次的對(duì)象類。
即:無(wú)論實(shí)例化多少次,都只產(chǎn)生唯一對(duì)象
模式骨架1:

var jquery = {
  getDom: function(){}
}
// 通過(guò)引用類型賦值只是存儲(chǔ)引用的特點(diǎn)
var jquery1 = jquery;
var jquery2 = jquery; // jquery1 === jquery === jquery2

模式骨架2:

var singleInstance = (function(){
  var instance = null;
  // 單例對(duì)象對(duì)應(yīng)的構(gòu)造函數(shù)
  var SingleInstance = function() {};
  return function(){
    // instance通過(guò)特權(quán)方法訪問(wèn)
    if (!instance) {
      instance = new SingleInstance()
    }
    return instance
  }
})()
var instanceA = singleInstance();
var instanceB = singleInstance();

使用場(chǎng)景:需要在多個(gè)環(huán)境、多次使用某個(gè)對(duì)象,模式1比較簡(jiǎn)單,可以作為聲明命名空間的方法,骨架2稍微復(fù)雜利用了閉包但是更符合面向?qū)ο蟮奶攸c(diǎn)

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

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

相關(guān)文章

  • JavaScript面向?qū)ο驩OM 2(JavaScript 創(chuàng)建對(duì)象的工廠模式和構(gòu)造函數(shù)模式

    摘要:都是構(gòu)造函數(shù)模式創(chuàng)建的原生構(gòu)造函數(shù)。使用構(gòu)造函數(shù)創(chuàng)建對(duì)象經(jīng)歷了以下四個(gè)過(guò)程創(chuàng)建一個(gè)新對(duì)象構(gòu)造函數(shù)的作用域交給新對(duì)象。 ??在創(chuàng)建對(duì)象的時(shí)候,使用對(duì)象字面量和 new Object() 構(gòu)造函數(shù)的方式創(chuàng)建一個(gè)對(duì)象是最簡(jiǎn)單最方便的方式。但是凡是處于初級(jí)階段的事物都會(huì)不可避免的存在一個(gè)問(wèn)題,沒(méi)有普適性,意思就是說(shuō)我要為世界上(程序中)的所有使用到的對(duì)象都使用一遍 var xxx = {} ,...

    you_De 評(píng)論0 收藏0
  • JavaScript面向?qū)ο驩OM 2(JavaScript 創(chuàng)建對(duì)象的工廠模式和構(gòu)造函數(shù)模式

    摘要:都是構(gòu)造函數(shù)模式創(chuàng)建的原生構(gòu)造函數(shù)。使用構(gòu)造函數(shù)創(chuàng)建對(duì)象經(jīng)歷了以下四個(gè)過(guò)程創(chuàng)建一個(gè)新對(duì)象構(gòu)造函數(shù)的作用域交給新對(duì)象。 ??在創(chuàng)建對(duì)象的時(shí)候,使用對(duì)象字面量和 new Object() 構(gòu)造函數(shù)的方式創(chuàng)建一個(gè)對(duì)象是最簡(jiǎn)單最方便的方式。但是凡是處于初級(jí)階段的事物都會(huì)不可避免的存在一個(gè)問(wèn)題,沒(méi)有普適性,意思就是說(shuō)我要為世界上(程序中)的所有使用到的對(duì)象都使用一遍 var xxx = {} ,...

    liuchengxu 評(píng)論0 收藏0
  • JavaScript設(shè)計(jì)模式-第一部分:?jiǎn)卫?em>模式、組合模式和外觀模式

    摘要:但是,這并不是采用單例的唯一原因。使用命名空間單例模式也被稱為模塊設(shè)計(jì)模式。函數(shù)內(nèi)部聲明了一些局部函數(shù)和或變量。緊隨函數(shù)聲明放置即可立即執(zhí)行外部函數(shù),并將所得的對(duì)象文字費(fèi)賠給變量。 JavaScript設(shè)計(jì)模式-第一部分:?jiǎn)卫J?、組合模式和外觀模式 設(shè)計(jì)模式是一些可靠的編程方式,有助于保證代碼更加易于維護(hù)、擴(kuò)展及分離,所有設(shè)計(jì)模式在創(chuàng)建大型JavaScript應(yīng)用程序時(shí)均不可或缺 單...

    betacat 評(píng)論0 收藏0
  • JavaScript設(shè)計(jì)模式】單例模式

    摘要:此時(shí)我們創(chuàng)建的對(duì)象內(nèi)保存靜態(tài)變量通過(guò)取值器訪問(wèn),最后將這個(gè)對(duì)象作為一個(gè)單例放在全局空間里面作為靜態(tài)變量單例對(duì)象供他人使用。 單例模式 又被稱為單體模式,是只允許實(shí)例化一次的對(duì)象類。有時(shí)我們也用一個(gè)對(duì)象來(lái)規(guī)劃一個(gè)命名空間,井井有條的管理對(duì)象上面的屬性和方法。 傳統(tǒng)的面向?qū)ο笳Z(yǔ)言中單例模式的實(shí)現(xiàn),均是單例對(duì)象從類中創(chuàng)建而來(lái),在以類為中心的語(yǔ)言中,這是很常見(jiàn)的做法。如果需要某個(gè)對(duì)象,就必須先...

    zhaot 評(píng)論0 收藏0
  • JavaScript面試系列:JavaScript設(shè)計(jì)模式之橋接模式和懶加載

    摘要:橋接模式的核心在于將抽象部分和它的實(shí)現(xiàn)部分分離,使它們都可以獨(dú)立的變化??雌饋?lái)這個(gè)版本已經(jīng)很完美了不,它仍然有可以優(yōu)化的空間,即題目提到的橋接模式。使用橋接模式的實(shí)現(xiàn)版本這個(gè)實(shí)現(xiàn)包含了三個(gè)函數(shù)。這個(gè)例子體現(xiàn)了橋接模式的作用。 我寫的程序員面試系列文章 Java面試系列-webapp文件夾和WebContent文件夾的區(qū)別? 程序員面試系列:Spring MVC能響應(yīng)HTTP請(qǐng)求的原因?...

    tracymac7 評(píng)論0 收藏0
  • JavaScript 設(shè)計(jì)模式(一):?jiǎn)卫?em>模式

    摘要:停更許久,近期計(jì)劃更新設(shè)計(jì)模式系列。單例模式是創(chuàng)建型設(shè)計(jì)模式的一種。雖然它不是正規(guī)的單例模式,但不可否認(rèn)確實(shí)具備類單例模式的特點(diǎn)。適用場(chǎng)景單例模式的特點(diǎn),意圖解決維護(hù)一個(gè)全局實(shí)例對(duì)象。 停更許久,近期計(jì)劃更新:設(shè)計(jì)模式系列。 showImg(https://segmentfault.com/img/bVbt7uw?w=800&h=600); 單例模式:限制類實(shí)例化次數(shù)只能一次,一個(gè)類只...

    xialong 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<