亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

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

瀏覽:77日期:2023-11-05 17:58:37

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

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

1.簡單工廠模式

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

//定義通用的對象類 var car = function(){}; //定義對象,對象內容省略,對象必須實現car定義的成員函數(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(); } //可以不用理會下面這行代碼,這里是為了確保所有的品牌汽車都實現了car類的方法 Interface.ensureImplements(car, Car); //返回對象 return car; }};//如果我們要獲取一部汽車,只需要調用:var mycar = CarFactory.createCar(’bmw’);//不論是什么牌子的汽車,他應該都具有car的所有方法,因此即使不是同樣的對象,我們可以“透明”的調用他的方法

2.工廠模式

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

//創建一個通用的工廠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,請參考https://www.jb51.net/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的內容,下面的類名只是實例,并非真實存在)

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

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

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

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

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

標簽: JavaScript
相關文章:
主站蜘蛛池模板: 亚洲精品一区二区三区 | 国产免费一区二区 | 国产高清尿小便嘘嘘视频 | 亚洲 欧美 另类 综合 日韩 | 一级毛片在线播放免费 | 久久综合给合久久狠狠狠色97 | 久久亚洲国产精品五月天 | 欧美日韩国产高清视频 | 一级毛片在线播放免费 | 亚洲精品中文字幕区 | 1024视频色版在线网站 | 女人被两根一起进3p在线观看 | 免费一看一级欧美 | 99久久精品国产一区二区三区 | 男女生性毛片免费观看 | 精品欧美一区二区三区 | 国产精品黄页在线播放免费 | 久久99这里只有精品国产 | 久久夜色精品国产飘飘 | 麻豆精品视频在线原创 | 91老司机免费精品观看 | 中文字幕 日韩有码 | 一级做a爰片性色毛片男 | 综合久久婷婷 | a毛片免费全部在线播放毛 a毛片免费全部播放毛 | 久草在线免费资源站 | 欧美日韩中文视频 | 成人啪精品视频免费网站 | 精品成人在线视频 | 日本无吗中文字幕免费婷婷 | 欧美片欧美日韩国产综合片 | 亚洲国产精品日韩一线满 | 国产黄大片 | 国产午夜毛片一区二区三区 | 欧美日韩一区二区视频免费看 | 国产伦精品一区二区三区视频小说 | 真实国产精品视频国产网 | 免费尤物视频 | 欧美亚洲专区 | 国产成人亚洲综合一区 | 免费大黄网站在线看 |