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

資訊專欄INFORMATION COLUMN

Javascript設(shè)計模式(二)工廠模式

anonymoussf / 2166人閱讀

摘要:所謂的工廠模式,顧名思義就是成批量地生產(chǎn)模式。工廠方法將類的實例化延遲到子類首先是創(chuàng)建構(gòu)造函數(shù),區(qū)別物種的不同屬性。工廠模式適用于以下場景實例對象較復(fù)雜。設(shè)計模式更代表的是一種系統(tǒng)思想,而不是重復(fù)的代碼堆砌。

所謂的工廠模式,顧名思義就是成批量地生產(chǎn)模式。它的核心作用也是和現(xiàn)實中的工廠一樣利用重復(fù)的代碼最大化地產(chǎn)生效益。在javascript中,它常常用來生產(chǎn)許許多多相同的實例對象,在代碼上做到最大的利用。工廠模式定義創(chuàng)建對象的接口,但是讓子類決定實例化哪個類。工廠方法將類的實例化延遲到子類

首先是創(chuàng)建構(gòu)造函數(shù),區(qū)別物種的不同屬性。

//定義人的構(gòu)造函數(shù)
var man = function(o) {
    this.foots = o.foot || 2;
    this.legs = o.legs || 2;
}

//定義魚的構(gòu)造函數(shù)
var fish = function(o) {
    this.qi = o.qi || 4;
    this.foots = o.foots || 9;
}

//定義外星人的構(gòu)造函數(shù)
var et = function(o) {
    this.legs = o.legs ||10;
    this.eyes = o.eyes || 6;
}

接下來我們再創(chuàng)建一個工廠的構(gòu)造函數(shù):

//工廠函數(shù)的構(gòu)造函數(shù)
var F = function() {}

接著在原型上設(shè)置它的默認(rèn)方法:

//f的默認(rèn)輸出實例函數(shù);
F.prototype.vehicleClass = man;

此時,該工廠函數(shù)默認(rèn)生產(chǎn)的是man的實例,在不配置的情況下我們產(chǎn)生的是人類的實例,然后我們對vehicleClass這個函數(shù)進(jìn)行擴充,生成一個新的函數(shù),此函數(shù)可以對不同的類別進(jìn)行甄別,

//類的甄別函數(shù)
F.prototype.vehicleCreate = function(o) {
    switch(o.vehicleType) {
        case "man" :
            this.vehicleClass = man;
            break;
        case "fish" :
            this.vehicleClass = fish;
            break;
        case "et" :
            this.vehicleClass = et;
            break;
        }
    //返回實例
    return this.vehicleClass(o);
}

通過swith語句的索引,可以通過vehicleType進(jìn)行不同類的實例化。那么我們看看這個類是如何工作的。首先時實例工廠類.

var Factory = new F();

然后調(diào)用vehicleCreate方法,通過傳參獲取不同實例的對象。

var Man = Factory.vehicleCreate({
    vehicleType : "man",
    legs : 2,
    foots : 2
});

這樣,通過vehicleType的值,我們可以告訴工廠類我們希望輸出的物種,然后通過其他的屬性,我們可以控制該物種實例的各種基礎(chǔ)屬性。

工廠模式適用于以下場景:

實例對象較復(fù)雜。

多對象的簡單,快速的實現(xiàn)。

跟享元模類似,適用于擁有共同屬性的對象。

只需要滿足一個API契約的其他對象的實例對象。

工廠模式實現(xiàn)起來較為簡單,不僅僅是工廠模式,幾乎所有模式的代碼看起來都比較簡單。設(shè)計模式其實就是把經(jīng)常用到的代碼歸納總結(jié)系統(tǒng)的表達(dá)而已。在之后的應(yīng)用中,我們可以系統(tǒng)地去想到這些模式并且運用它們。設(shè)計模式更代表的是一種系統(tǒng)思想,而不是重復(fù)的代碼堆砌。

引用鏈接

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

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/99144.html

相關(guān)文章

  • 從ES6重新認(rèn)識JavaScript設(shè)計模式(): 工廠模式

    摘要:簡單工廠模式簡單工廠模式又叫靜態(tài)工廠模式,由一個工廠對象決定創(chuàng)建某一種產(chǎn)品對象類的實例。工廠方法模式工廠方法模式的本意是將實際創(chuàng)建對象的工作推遲到子類中,這樣核心類就變成了抽象類。抽象工廠模式一般用在 1 什么是工廠模式? 工廠模式是用來創(chuàng)建對象的一種最常用的設(shè)計模式。我們不暴露創(chuàng)建對象的具體邏輯,而是將將邏輯封裝在一個函數(shù)中,那么這個函數(shù)就可以被視為一個工廠。工廠模式根據(jù)抽象程度的不...

    Reducto 評論0 收藏0
  • 從ES6重新認(rèn)識JavaScript設(shè)計模式(): 工廠模式

    摘要:簡單工廠模式簡單工廠模式又叫靜態(tài)工廠模式,由一個工廠對象決定創(chuàng)建某一種產(chǎn)品對象類的實例。工廠方法模式工廠方法模式的本意是將實際創(chuàng)建對象的工作推遲到子類中,這樣核心類就變成了抽象類。抽象工廠模式一般用在 1 什么是工廠模式? 工廠模式是用來創(chuàng)建對象的一種最常用的設(shè)計模式。我們不暴露創(chuàng)建對象的具體邏輯,而是將將邏輯封裝在一個函數(shù)中,那么這個函數(shù)就可以被視為一個工廠。工廠模式根據(jù)抽象程度的不...

    szysky 評論0 收藏0
  • JavaScript設(shè)計模式- 簡單工廠模式

    摘要:簡單工廠模式又叫靜態(tài)工廠方法模式,由一個工廠對象決定創(chuàng)建某一種產(chǎn)品對象類的實例。主要用來創(chuàng)建同一類對象。場景一比如體育商店賣體育器材,里面有很多體育用品,及相關(guān)介紹,當(dāng)我們想買一個籃球及相關(guān)介紹時,只需要溫售貨員,他會幫你找到所有的東西。 簡單工廠模式又叫靜態(tài)工廠方法模式,由一個工廠對象決定創(chuàng)建某一種產(chǎn)品對象類的實例。主要用來創(chuàng)建同一類對象。場景一:比如體育商店賣體育器材,里面有很多體...

    Loong_T 評論0 收藏0
  • 細(xì)談JavaScript中的一些設(shè)計模式

    摘要:注意事項聲明函數(shù)時候處理業(yè)務(wù)邏輯區(qū)分和單例的區(qū)別,配合單例實現(xiàn)初始化構(gòu)造函數(shù)大寫字母開頭推薦注意的成本。簡單工廠模式使用一個類通常為單體來生成實例。 @(書籍閱讀)[JavaScript, 設(shè)計模式] 常見設(shè)計模式 一直對設(shè)計模式不太懂,花了一下午加一晚上的時間,好好的看了看各種設(shè)計模式,并總結(jié)了一下。 設(shè)計模式簡介 設(shè)計模式概念解讀 設(shè)計模式的發(fā)展與在JavaScript中的應(yīng)用 ...

    30e8336b8229 評論0 收藏0

發(fā)表評論

0條評論

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