成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JavaScript-創(chuàng)建性設計模式

imccl / 1356人閱讀

摘要:即把構造函數的原型指向某個實例,所有構造函數的實例對象都共享原型中屬性和方法。

工廠方法模式

定義:通過對產品類的抽象使其創(chuàng)建業(yè)務主要用于創(chuàng)建多類實例
即:再構造函數中創(chuàng)建指定類型的實例,原型屬性方法中定義創(chuàng)建過程
算法骨架:

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

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

建造者模式

定義:將一個復雜對象的構建與表示分離,同樣的構建過程可以創(chuàng)建不同的表示。
即:把存在變化的部分從大對象里抽出來,在構建過程中傳入參數控制變化。
算法骨架:

  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 ...
    }
  }

使用場景:一個對象的某一部分易變就可通過建造者模式抽象出來,這樣多帶帶維護易變部分。

原型模式

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

var ProConstructor = function(name) { // 原型對象對應的構造函數
  this.name = name
}
ProConstructor.prototype.walk = function() { // 原型對象中的方法

}
var InsContructor = function(name) { // 對象實例對應的構造函數
  ProConstructor.call(this, name) // 構造函數繼承, 復制一些屬性,這些屬性值每個對象不一樣
}
InsContructor.prototype = new ProConstructor(); // 原型繼承, 將耗時長、每個對象都又這個值的屬性和方法通過原型繼承

模式骨架2:

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

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

單例模式

定義:是只允許實例化一次的對象類。
即:無論實例化多少次,都只產生唯一對象
模式骨架1:

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

模式骨架2:

var singleInstance = (function(){
  var instance = null;
  // 單例對象對應的構造函數
  var SingleInstance = function() {};
  return function(){
    // instance通過特權方法訪問
    if (!instance) {
      instance = new SingleInstance()
    }
    return instance
  }
})()
var instanceA = singleInstance();
var instanceB = singleInstance();

使用場景:需要在多個環(huán)境、多次使用某個對象,模式1比較簡單,可以作為聲明命名空間的方法,骨架2稍微復雜利用了閉包但是更符合面向對象的特點

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

轉載請注明本文地址:http://systransis.cn/yun/105512.html

相關文章

  • JavaScript面向對象OOM 2(JavaScript 創(chuàng)建對象的工廠模式和構造函數模式

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

    you_De 評論0 收藏0
  • JavaScript面向對象OOM 2(JavaScript 創(chuàng)建對象的工廠模式和構造函數模式

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

    liuchengxu 評論0 收藏0
  • JavaScript設計模式-第一部分:單例模式、組合模式和外觀模式

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

    betacat 評論0 收藏0
  • JavaScript設計模式】單例模式

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

    zhaot 評論0 收藏0
  • JavaScript面試系列:JavaScript設計模式之橋接模式和懶加載

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

    tracymac7 評論0 收藏0
  • JavaScript 設計模式(一):單例模式

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

    xialong 評論0 收藏0

發(fā)表評論

0條評論

imccl

|高級講師

TA的文章

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