亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

《javascript設計模式》學習筆記五:Javascript面向對象程序設計工廠模式實例分析

 更新時間:2020年04月08日 08:35:59   作者:silentime  
這篇文章主要介紹了Javascript面向對象程序設計工廠模式,結合實例形式分析了《javascript設計模式》中Javascript面向對象工廠模式相關概念、原理、用法及操作注意事項,需要的朋友可以參考下

本文實例講述了Javascript面向對象程序設計工廠模式。分享給大家供大家參考,具體如下:

工廠模式和單例模式(http://chabaoo.cn/article/184230.htm)應該是設計模式中應用最多的模式了,工廠模式的定義:提供創(chuàng)建對象的接口(來自百度百科:http://baike.baidu.com/view/1306799.htm),意思就是根據(jù)領導(調用者)的指示(參數(shù)),生產(chǎn)相應的產(chǎn)品(對象)。

1.簡單工廠模式

    簡單工廠也就是按照上面的定義,根據(jù)不同的參數(shù)返回不同的結果。

  //定義通用的對象類
  var car = function(){};
  //定義對象,對象內(nèi)容省略,對象必須實現(xiàn)car定義的成員函數(shù)(yy一下車^_^)
  var benz = function(){};
  var bmw = function(){};
  var audi = function(){};

  //工廠方法
  var CarFactory = {
    createCar: function(brand){
       //private member of CarFactory
       var car;
       switch(brand){
        case 'benz':
          car = new benz();
          break;
        case 'bmw':
          car = new bmw();
          break;
        case 'audi':
          car = new audi();
          break;
        default:
          car = new bmw();
       }
       //可以不用理會下面這行代碼,這里是為了確保所有的品牌汽車都實現(xiàn)了car類的方法
       Interface.ensureImplements(car, Car);
       //返回對象
       return car;
     }
};
//如果我們要獲取一部汽車,只需要調用:
var mycar = CarFactory.createCar('bmw');
//不論是什么牌子的汽車,他應該都具有car的所有方法,因此即使不是同樣的對象,我們可以“透明”的調用他的方法

2.工廠模式

工廠模式與簡單工廠模式的區(qū)別在于工廠模式使用子類來創(chuàng)建對象,而不是一個獨立的類

//創(chuàng)建一個通用的工廠
var factory = function(){};
factory.prototype = {
  sellcar: function(brand){
    var car = this.createCar(brand);
    return car;
  },
  createCar: function(){
    throw new Error('unsupported operation on an abstract class');
  }
}

//北汽集團
var BJfactory = function(){};
//繼承自factory,請參考http://chabaoo.cn/article/184227.htm面向對象之二繼承)
extend(BJfactory,factory);
//重寫汽車方法
BJfactory.prototype.createCar = function(brand){
  var car;
  switch(brand){
   case 'bmw':
     car = new BJbmw();
     break;
   case 'benz':
     car = new BJbenz();
     break;
   case 'audi':
     car = new BJaudi();
     break;
   default:
     car = new BJbmw();
  }
  Interface.ensureImplements(car, Car);
  return car;
}
//上汽
var SHfactory = function();
extend(SHfactory, factory);
//形式同北汽
……

//這樣一來,您在北京買車
var fac = new BJfactory();
//調用父類方法
var mycar = fac.sellcar('benz');
//在上海買車
fac = new SHfactory();
hercar = fac.sellcar('audi');
//注意標紅的兩行調用,調用者都是fac,其實是factory的兩個不同子類,但是調用方法都一樣,這就是工廠方法的使用

3.類比PHP(希望有助于理解1,2的內(nèi)容,下面的類名只是實例,并非真實存在)

如果熟悉PHP的同學,也應該了解像PHP的數(shù)據(jù)庫類一般也是工廠模式,形如:

$db = DataBase.getInstance('mysql');
//這里的$db其實是new Mysql(),而無論是class Mysql,還是class Oracle,還是class MSsql都實現(xiàn)了下面的connect,query方法

$db->connect();
$db->query($sql);

感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運行工具http://tools.jb51.net/code/HtmlJsRun測試上述代碼運行效果。

更多關于JavaScript相關內(nèi)容感興趣的讀者可查看本站專題:《javascript面向對象入門教程》、《JavaScript錯誤與調試技巧總結》、《JavaScript數(shù)據(jù)結構與算法技巧總結》、《JavaScript遍歷算法與技巧總結》及《JavaScript數(shù)學運算用法總結

希望本文所述對大家JavaScript程序設計有所幫助。

相關文章

  • javascript實現(xiàn)秒表計時器的制作方法

    javascript實現(xiàn)秒表計時器的制作方法

    這篇文章主要為大家詳細介紹了javascript實現(xiàn)秒表計時器的制作方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • JavaScript如何讀取本地excel文件、txt文件的內(nèi)容

    JavaScript如何讀取本地excel文件、txt文件的內(nèi)容

    JavaScript是一種腳本語言,廣泛應用于前端開發(fā),這篇文章主要給大家介紹了關于JavaScript如何讀取本地excel文件、txt文件的內(nèi)容,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-06-06
  • 學會javascript之迭代器

    學會javascript之迭代器

    本文主要講解javascript之迭代器,在 JavaScript 中,迭代器是一個對象,它定義一個序列,并在終止時可能返回一個返回值。需要詳細了解相關知識的小伙伴可以參考一下這篇文章
    2021-09-09
  • javascript 禁用IE工具欄,導航欄等等實現(xiàn)代碼

    javascript 禁用IE工具欄,導航欄等等實現(xiàn)代碼

    在處理問題時候遇到的,就順便記錄與大家一起分享下,感興趣的朋友可以參考下哈,希望可以幫助到你
    2013-04-04
  • 淺談Fetch 數(shù)據(jù)交互方式

    淺談Fetch 數(shù)據(jù)交互方式

    這篇文章主要介紹了淺談Fetch 數(shù)據(jù)交互方式,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • JavaScript中的Function函數(shù)

    JavaScript中的Function函數(shù)

    函數(shù)是由事件驅動的或者當它被調用時執(zhí)行的可重復使用的代碼塊,接下來跟著小編一起來學習javascript中的function函數(shù),小伙伴們快來一起學習吧
    2015-08-08
  • Window.Open打開窗體和if嵌套代碼

    Window.Open打開窗體和if嵌套代碼

    這篇文章主要介紹了Window.Open打開窗體和if嵌套代碼的相關資料,需要的朋友可以參考下
    2016-04-04
  • JS實現(xiàn)轉動隨機數(shù)抽獎特效代碼

    JS實現(xiàn)轉動隨機數(shù)抽獎特效代碼

    這篇文章主要為大家詳細介紹了一款轉動隨機數(shù)抽獎的JS特效代碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2015-08-08
  • 用函數(shù)式編程技術編寫優(yōu)美的 JavaScript_ibm

    用函數(shù)式編程技術編寫優(yōu)美的 JavaScript_ibm

    函數(shù)式編程語言在學術領域已經(jīng)存在相當長一段時間了,但是從歷史上看,它們沒有豐富的工具和庫可供使用。隨著 .NET 平臺上的 Haskell 的出現(xiàn),函數(shù)式編程變得更加流行。一些傳統(tǒng)的編程語言,例如 C++ 和 JavaScript,引入了由函數(shù)式編程提供的一些構造和特性。在許多情況下,JavaScript 的重復代碼導致了一些拙劣的編碼。如果使用函數(shù)式編程,就可以避免這些問題。此外,可以利用函數(shù)式編程風格編寫更加優(yōu)美的回調。
    2008-05-05
  • JS截取字符串實例詳解

    JS截取字符串實例詳解

    這篇文章主要介紹了JS截取字符串的方法,結合實例形式較為詳細的分析了JavaScript截取字符串的常用函數(shù)與具體使用技巧,并附帶說明了JS截取字符串substr和substring方法的區(qū)別,需要的朋友可以參考下
    2015-11-11

最新評論