摘要:所謂的工廠模式,顧名思義就是成批量地生產(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
摘要:簡單工廠模式簡單工廠模式又叫靜態(tài)工廠模式,由一個工廠對象決定創(chuàng)建某一種產(chǎn)品對象類的實例。工廠方法模式工廠方法模式的本意是將實際創(chuàng)建對象的工作推遲到子類中,這樣核心類就變成了抽象類。抽象工廠模式一般用在 1 什么是工廠模式? 工廠模式是用來創(chuàng)建對象的一種最常用的設(shè)計模式。我們不暴露創(chuàng)建對象的具體邏輯,而是將將邏輯封裝在一個函數(shù)中,那么這個函數(shù)就可以被視為一個工廠。工廠模式根據(jù)抽象程度的不...
摘要:簡單工廠模式簡單工廠模式又叫靜態(tài)工廠模式,由一個工廠對象決定創(chuàng)建某一種產(chǎn)品對象類的實例。工廠方法模式工廠方法模式的本意是將實際創(chuàng)建對象的工作推遲到子類中,這樣核心類就變成了抽象類。抽象工廠模式一般用在 1 什么是工廠模式? 工廠模式是用來創(chuàng)建對象的一種最常用的設(shè)計模式。我們不暴露創(chuàng)建對象的具體邏輯,而是將將邏輯封裝在一個函數(shù)中,那么這個函數(shù)就可以被視為一個工廠。工廠模式根據(jù)抽象程度的不...
摘要:簡單工廠模式又叫靜態(tài)工廠方法模式,由一個工廠對象決定創(chuàng)建某一種產(chǎn)品對象類的實例。主要用來創(chuàng)建同一類對象。場景一比如體育商店賣體育器材,里面有很多體育用品,及相關(guān)介紹,當(dāng)我們想買一個籃球及相關(guān)介紹時,只需要溫售貨員,他會幫你找到所有的東西。 簡單工廠模式又叫靜態(tài)工廠方法模式,由一個工廠對象決定創(chuàng)建某一種產(chǎn)品對象類的實例。主要用來創(chuàng)建同一類對象。場景一:比如體育商店賣體育器材,里面有很多體...
摘要:注意事項聲明函數(shù)時候處理業(yè)務(wù)邏輯區(qū)分和單例的區(qū)別,配合單例實現(xiàn)初始化構(gòu)造函數(shù)大寫字母開頭推薦注意的成本。簡單工廠模式使用一個類通常為單體來生成實例。 @(書籍閱讀)[JavaScript, 設(shè)計模式] 常見設(shè)計模式 一直對設(shè)計模式不太懂,花了一下午加一晚上的時間,好好的看了看各種設(shè)計模式,并總結(jié)了一下。 設(shè)計模式簡介 設(shè)計模式概念解讀 設(shè)計模式的發(fā)展與在JavaScript中的應(yīng)用 ...
閱讀 1010·2023-04-25 14:45
閱讀 2790·2021-09-30 09:59
閱讀 3132·2021-09-22 15:48
閱讀 2432·2019-08-30 15:55
閱讀 3485·2019-08-30 15:44
閱讀 551·2019-08-29 14:07
閱讀 3420·2019-08-26 13:45
閱讀 545·2019-08-26 11:31