摘要:所謂的工廠模式,顧名思義就是成批量地生產(chǎn)模式。工廠方法將類的實(shí)例化延遲到子類首先是創(chuàng)建構(gòu)造函數(shù),區(qū)別物種的不同屬性。工廠模式適用于以下場景實(shí)例對(duì)象較復(fù)雜。設(shè)計(jì)模式更代表的是一種系統(tǒng)思想,而不是重復(fù)的代碼堆砌。
所謂的工廠模式,顧名思義就是成批量地生產(chǎn)模式。它的核心作用也是和現(xiàn)實(shí)中的工廠一樣利用重復(fù)的代碼最大化地產(chǎn)生效益。在javascript中,它常常用來生產(chǎn)許許多多相同的實(shí)例對(duì)象,在代碼上做到最大的利用。工廠模式定義創(chuàng)建對(duì)象的接口,但是讓子類決定實(shí)例化哪個(gè)類。工廠方法將類的實(shí)例化延遲到子類
首先是創(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; }
接下來我們?cè)賱?chuàng)建一個(gè)工廠的構(gòu)造函數(shù):
//工廠函數(shù)的構(gòu)造函數(shù) var F = function() {}
接著在原型上設(shè)置它的默認(rèn)方法:
//f的默認(rèn)輸出實(shí)例函數(shù); F.prototype.vehicleClass = man;
此時(shí),該工廠函數(shù)默認(rèn)生產(chǎn)的是man的實(shí)例,在不配置的情況下我們產(chǎn)生的是人類的實(shí)例,然后我們對(duì)vehicleClass這個(gè)函數(shù)進(jìn)行擴(kuò)充,生成一個(gè)新的函數(shù),此函數(shù)可以對(duì)不同的類別進(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; } //返回實(shí)例 return this.vehicleClass(o); }
通過swith語句的索引,可以通過vehicleType進(jìn)行不同類的實(shí)例化。那么我們看看這個(gè)類是如何工作的。首先時(shí)實(shí)例工廠類.
var Factory = new F();
然后調(diào)用vehicleCreate方法,通過傳參獲取不同實(shí)例的對(duì)象。
var Man = Factory.vehicleCreate({ vehicleType : "man", legs : 2, foots : 2 });
這樣,通過vehicleType的值,我們可以告訴工廠類我們希望輸出的物種,然后通過其他的屬性,我們可以控制該物種實(shí)例的各種基礎(chǔ)屬性。
工廠模式適用于以下場景:
實(shí)例對(duì)象較復(fù)雜。
多對(duì)象的簡單,快速的實(shí)現(xiàn)。
跟享元模類似,適用于擁有共同屬性的對(duì)象。
只需要滿足一個(gè)API契約的其他對(duì)象的實(shí)例對(duì)象。
工廠模式實(shí)現(xiàn)起來較為簡單,不僅僅是工廠模式,幾乎所有模式的代碼看起來都比較簡單。設(shè)計(jì)模式其實(shí)就是把經(jīng)常用到的代碼歸納總結(jié)系統(tǒng)的表達(dá)而已。在之后的應(yīng)用中,我們可以系統(tǒng)地去想到這些模式并且運(yùn)用它們。設(shè)計(jì)模式更代表的是一種系統(tǒng)思想,而不是重復(fù)的代碼堆砌。
引用鏈接
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/99144.html
摘要:簡單工廠模式簡單工廠模式又叫靜態(tài)工廠模式,由一個(gè)工廠對(duì)象決定創(chuàng)建某一種產(chǎn)品對(duì)象類的實(shí)例。工廠方法模式工廠方法模式的本意是將實(shí)際創(chuàng)建對(duì)象的工作推遲到子類中,這樣核心類就變成了抽象類。抽象工廠模式一般用在 1 什么是工廠模式? 工廠模式是用來創(chuàng)建對(duì)象的一種最常用的設(shè)計(jì)模式。我們不暴露創(chuàng)建對(duì)象的具體邏輯,而是將將邏輯封裝在一個(gè)函數(shù)中,那么這個(gè)函數(shù)就可以被視為一個(gè)工廠。工廠模式根據(jù)抽象程度的不...
摘要:簡單工廠模式簡單工廠模式又叫靜態(tài)工廠模式,由一個(gè)工廠對(duì)象決定創(chuàng)建某一種產(chǎn)品對(duì)象類的實(shí)例。工廠方法模式工廠方法模式的本意是將實(shí)際創(chuàng)建對(duì)象的工作推遲到子類中,這樣核心類就變成了抽象類。抽象工廠模式一般用在 1 什么是工廠模式? 工廠模式是用來創(chuàng)建對(duì)象的一種最常用的設(shè)計(jì)模式。我們不暴露創(chuàng)建對(duì)象的具體邏輯,而是將將邏輯封裝在一個(gè)函數(shù)中,那么這個(gè)函數(shù)就可以被視為一個(gè)工廠。工廠模式根據(jù)抽象程度的不...
摘要:簡單工廠模式又叫靜態(tài)工廠方法模式,由一個(gè)工廠對(duì)象決定創(chuàng)建某一種產(chǎn)品對(duì)象類的實(shí)例。主要用來創(chuàng)建同一類對(duì)象。場景一比如體育商店賣體育器材,里面有很多體育用品,及相關(guān)介紹,當(dāng)我們想買一個(gè)籃球及相關(guān)介紹時(shí),只需要溫售貨員,他會(huì)幫你找到所有的東西。 簡單工廠模式又叫靜態(tài)工廠方法模式,由一個(gè)工廠對(duì)象決定創(chuàng)建某一種產(chǎn)品對(duì)象類的實(shí)例。主要用來創(chuàng)建同一類對(duì)象。場景一:比如體育商店賣體育器材,里面有很多體...
摘要:注意事項(xiàng)聲明函數(shù)時(shí)候處理業(yè)務(wù)邏輯區(qū)分和單例的區(qū)別,配合單例實(shí)現(xiàn)初始化構(gòu)造函數(shù)大寫字母開頭推薦注意的成本。簡單工廠模式使用一個(gè)類通常為單體來生成實(shí)例。 @(書籍閱讀)[JavaScript, 設(shè)計(jì)模式] 常見設(shè)計(jì)模式 一直對(duì)設(shè)計(jì)模式不太懂,花了一下午加一晚上的時(shí)間,好好的看了看各種設(shè)計(jì)模式,并總結(jié)了一下。 設(shè)計(jì)模式簡介 設(shè)計(jì)模式概念解讀 設(shè)計(jì)模式的發(fā)展與在JavaScript中的應(yīng)用 ...
閱讀 1124·2023-04-25 14:45
閱讀 2897·2021-09-30 09:59
閱讀 3196·2021-09-22 15:48
閱讀 2492·2019-08-30 15:55
閱讀 3593·2019-08-30 15:44
閱讀 632·2019-08-29 14:07
閱讀 3481·2019-08-26 13:45
閱讀 590·2019-08-26 11:31