亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

深入理解JavaScript系列(28):設計模式之工廠模式詳解

2019-11-20 13:02:13
字體:
來源:轉載
供稿:網友

介紹

與創建型模式類似,工廠模式創建對象(視為工廠里的產品)時無需指定創建對象的具體類。

工廠模式定義一個用于創建對象的接口,這個接口由子類決定實例化哪一個類。該模式使一個類的實例化延遲到了子類。而子類可以重寫接口方法以便創建的時候指定自己的對象類型。

這個模式十分有用,尤其是創建對象的流程賦值的時候,比如依賴于很多設置文件等。并且,你會經常在程序里看到工廠方法,用于讓子類類定義需要創建的對象類型。

正文

下面這個例子中,是應用了工廠方法對第26章構造函數模式代碼的改進版本:

復制代碼 代碼如下:

var Car = (function () {
    var Car = function (model, year, miles) {
        this.model = model;
        this.year = year;
        this.miles = miles;
    };
    return function (model, year, miles) {
        return new Car(model, year, miles);
    };
})();

var tom = new Car("Tom", 2009, 20000);
var dudu = new Car("Dudu", 2010, 5000);

不好理解的話,我們再給一個例子:

復制代碼 代碼如下:

var productManager = {};

productManager.createProductA = function () {
    console.log('ProductA');
}

productManager.createProductB = function () {
    console.log('ProductB');
}
       
productManager.factory = function (typeType) {
    return new productManager[typeType];
}

productManager.factory("createProductA");

如果還不理解的話,那我們就再詳細一點咯,假如我們想在網頁面里插入一些元素,而這些元素類型不固定,可能是圖片,也有可能是連接,甚至可能是文本,根據工廠模式的定義,我們需要定義工廠類和相應的子類,我們先來定義子類的具體實現(也就是子函數):

復制代碼 代碼如下:

var page = page || {};
page.dom = page.dom || {};
//子函數1:處理文本
page.dom.Text = function () {
    this.insert = function (where) {
        var txt = document.createTextNode(this.url);
        where.appendChild(txt);
    };
};

//子函數2:處理鏈接
page.dom.Link = function () {
    this.insert = function (where) {
        var link = document.createElement('a');
        link.href = this.url;
        link.appendChild(document.createTextNode(this.url));
        where.appendChild(link);
    };
};

//子函數3:處理圖片
page.dom.Image = function () {
    this.insert = function (where) {
        var im = document.createElement('img');
        im.src = this.url;
        where.appendChild(im);
    };
};

那么我們如何定義工廠處理函數呢?其實很簡單:

復制代碼 代碼如下:

page.dom.factory = function (type) {
    return new page.dom[type];
}

使用方式如下:
復制代碼 代碼如下:

var o = page.dom.factory('Link');
o.url = 'http://www.cnblogs.com';
o.insert(document.body);

至此,工廠模式的介紹相信大家都已經了然于心了,我就不再多敘述了。

總結

什么時候使用工廠模式

以下幾種情景下工廠模式特別有用:

1.對象的構建十分復雜
2.需要依賴具體環境創建不同實例
3.處理大量具有相同屬性的小對象

什么時候不該用工廠模式

不濫用運用工廠模式,有時候僅僅只是給代碼增加了不必要的復雜度,同時使得測試難以運行下去。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品视频一区二区高潮| 久久好看免费视频| 亚洲精品720p| 日韩av成人在线观看| 午夜精品蜜臀一区二区三区免费| 精品中文字幕视频| 久久久久久久久久久成人| 国产亚洲一级高清| 欧美日韩免费观看中文| 久久亚洲精品网站| 精品国产一区二区三区久久狼黑人| 两个人的视频www国产精品| 欧美洲成人男女午夜视频| 国产精品视频导航| 国产91色在线免费| 亚洲精品二三区| 久久精品中文字幕免费mv| 日韩69视频在线观看| 77777亚洲午夜久久多人| 亚洲乱码一区二区| 欧美激情久久久久| 亚洲精品电影在线| 国产精品视频免费观看www| 亚洲欧美日本另类| 5252色成人免费视频| 不用播放器成人网| 日韩暖暖在线视频| 亚洲无限乱码一二三四麻| 欧美精品18videos性欧| 久久综合伊人77777蜜臀| 日韩欧美中文字幕在线播放| 97在线看免费观看视频在线观看| 国内精品久久久久久| 日韩av大片免费看| 亚洲人成免费电影| 亚洲精品免费网站| 欧美大片免费观看在线观看网站推荐| 国产精品中文字幕在线| 揄拍成人国产精品视频| 日韩国产高清视频在线| 俺去亚洲欧洲欧美日韩| 色偷偷av一区二区三区乱| 国产成人精品优优av| 久久久国产精品免费| 久久久久久这里只有精品| 亚洲国产福利在线| 日韩欧美成人网| 久久久精品国产| 51精品国产黑色丝袜高跟鞋| 亚洲精品国偷自产在线99热| 亚洲精品不卡在线| 欧美极品美女电影一区| 疯狂蹂躏欧美一区二区精品| 亚洲国产精品一区二区久| 欧美日韩国产第一页| 国产在线久久久| 色多多国产成人永久免费网站| 成人444kkkk在线观看| 日韩电影网在线| 成人午夜两性视频| 日韩成人黄色av| 亚洲天堂免费视频| 成人激情视频免费在线| 欧美日本高清一区| 亚洲精品国产美女| 亚洲性69xxxbbb| 成人网址在线观看| 国产日韩欧美中文| 久久人人97超碰精品888| 亚洲毛片一区二区| 久久久久久有精品国产| 91超碰caoporn97人人| 91色p视频在线| www.午夜精品| 精品中文字幕视频| 91国产视频在线播放| 精品久久久久久久久久ntr影视| 国产精品亚洲第一区| 国产精品一二三视频| 成年无码av片在线| 97涩涩爰在线观看亚洲| 国产精品久久久久久久天堂| 国产精品免费一区二区三区都可以| 国产香蕉精品视频一区二区三区| 国产a级全部精品| 国产精品99导航| 欧美亚洲在线观看| 亚洲成人免费在线视频| 精品视频偷偷看在线观看| 国模私拍一区二区三区| 亚洲国产私拍精品国模在线观看| 97视频免费观看| 亚洲国产一区二区三区在线观看| 国产精品一区二区三| 精品一区二区三区四区在线| 久久久久久久久久av| 国产精品视频网站| 久久精品视频免费播放| 欧美日本黄视频| 国产精品国产自产拍高清av水多| 亚洲精品videossex少妇| 国产高清在线不卡| 疯狂欧美牲乱大交777| 亚洲午夜未满十八勿入免费观看全集| 日韩欧美一区二区三区久久| 久久久亚洲网站| 亚洲性线免费观看视频成熟| 日本欧美国产在线| 日韩中文字幕第一页| 中文字幕精品在线视频| 精品一区二区亚洲| 91福利视频网| 欧美日韩另类在线| 国产精品一二三在线| 国产香蕉97碰碰久久人人| 综合国产在线观看| 国产精品久久电影观看| 日韩电影视频免费| 欧美日韩在线视频首页| 亚洲精品ady| 久久久综合av| 欧美性生交大片免网| 97在线观看免费高清| 日韩经典第一页| 高清亚洲成在人网站天堂| 亚洲一区二区三区乱码aⅴ| 国产精品久久久久久久久免费看| 国产精品美女免费视频| 国产精品久久久久aaaa九色| 亚洲欧美精品suv| 国产精品扒开腿做| 在线精品91av| 色噜噜狠狠狠综合曰曰曰88av| 欧洲永久精品大片ww免费漫画| 国产精品久久久久久久天堂| 日韩精品在线私人| 成人精品一区二区三区电影黑人| 日本最新高清不卡中文字幕| 亚洲精品久久久久久久久久久| 国产成人av网址| 欧洲精品久久久| 欧美性猛交xxxx富婆弯腰| 国产日韩在线播放| 欧美日韩国产限制| 91理论片午午论夜理片久久| 欧美视频在线观看 亚洲欧| 日韩美女中文字幕| 久久久久久久色| 91精品视频免费观看| 亚洲精品二三区| 日本精品性网站在线观看| 97人人模人人爽人人喊中文字| 韩国19禁主播vip福利视频| 国产精品xxxxx| 日本成人在线视频网址| 欧美日韩国产丝袜美女| 亚洲国产欧美一区二区三区同亚洲| 77777亚洲午夜久久多人| 亚洲成av人乱码色午夜| 色综合久综合久久综合久鬼88| 成人两性免费视频| 欧美日韩爱爱视频| 亚洲精品午夜精品| 成人国产精品av|