国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

《javascript設(shè)計(jì)模式》學(xué)習(xí)筆記五:Javascript面向?qū)ο蟪绦蛟O(shè)計(jì)工廠模式實(shí)例分析

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

本文實(shí)例講述了Javascript面向?qū)ο蟪绦蛟O(shè)計(jì)工廠模式。分享給大家供大家參考,具體如下:

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

1.簡(jiǎn)單工廠模式

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

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

2.工廠模式

工廠模式與簡(jiǎn)單工廠模式的區(qū)別在于工廠模式使用子類來(lái)創(chuàng)建對(duì)象,而不是一個(gè)獨(dú)立的類

//創(chuàng)建一個(gè)通用的工廠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’); }}//北汽集團(tuán)var BJfactory = function(){};//繼承自factory,請(qǐng)參考https://www.jb51.net/article/184227.htm面向?qū)ο笾^承)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);//形式同北汽……//這樣一來(lái),您在北京買車var fac = new BJfactory();//調(diào)用父類方法var mycar = fac.sellcar(’benz’);//在上海買車fac = new SHfactory();hercar = fac.sellcar(’audi’);//注意標(biāo)紅的兩行調(diào)用,調(diào)用者都是fac,其實(shí)是factory的兩個(gè)不同子類,但是調(diào)用方法都一樣,這就是工廠方法的使用

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

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

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

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

更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《javascript面向?qū)ο笕腴T教程》、《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)》

希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。

標(biāo)簽: JavaScript
相關(guān)文章:
主站蜘蛛池模板: 贵德县| 沁阳市| 黔西| 门头沟区| 山东省| 密山市| 郸城县| 绥滨县| 巨野县| 阜城县| 航空| 襄樊市| 广昌县| 侯马市| 伊金霍洛旗| 拉孜县| 湘潭县| 大埔县| 新丰县| 望江县| 忻城县| 始兴县| 紫阳县| 崇州市| 合肥市| 石嘴山市| 高雄县| 方正县| 永胜县| 六枝特区| 将乐县| 迁西县| 丰原市| 紫云| 靖远县| 扶风县| 舟曲县| 宝丰县| 信阳市| 祁连县| 古交市|