摘要:模塊模式概念模式最初被定義為一種在傳統(tǒng)軟件工程中為類提供私有和共有封裝的方法。應(yīng)用將暴露的公有指針指向到私有函數(shù)和屬性上參考設(shè)計(jì)模式設(shè)計(jì)模式系列文章設(shè)計(jì)模式之工廠模式設(shè)計(jì)模式之單例模式設(shè)計(jì)模式之外觀模式設(shè)計(jì)模式之模塊模式揭示模塊模式
Module(模塊)模式 概念
Module模式最初被定義為一種在傳統(tǒng)軟件工程中為類提供私有和共有封裝的方法。
通過(guò)這種方式,能夠使一個(gè)多帶帶的對(duì)象擁有共有/私有方法和變量,從而屏蔽來(lái)自全局作用局的特殊部分。
產(chǎn)生的結(jié)果是: 函數(shù)名與在頁(yè)面上其他腳本定義的函數(shù)沖突的可能性降級(jí)
實(shí)現(xiàn)一個(gè)簡(jiǎn)單的計(jì)數(shù)器
orderModule外的代碼無(wú)法直接讀取getNum(),addNum()和subNum(),orderNum變量實(shí)際上是與全局作用域隔離的,因此它表現(xiàn)的就像是一個(gè)四有變量,他的存在被局限于模塊的閉包內(nèi),因此唯一能訪問(wèn)其作用域的代碼就是這三個(gè)函數(shù)。
這樣實(shí)現(xiàn)同時(shí)也進(jìn)行了有效的命名空間設(shè)置。
var orderModule = (function() { var orderNum = 1; return { getNum: function() { return orderNum; }, addNum: function() { orderNum = orderNum + 1; }, subNum: function() { orderNum = orderNum > 1 ? orderNum - 1 : orderNum; } } })(); orderModule.getNum();Revealing Module(揭示模塊)模式 概念
揭示模塊模式是在模塊模式的基礎(chǔ)上進(jìn)行改進(jìn),在私有范圍內(nèi)簡(jiǎn)單定義所有的函數(shù)和變量,并返回一個(gè)匿名對(duì)象,它擁有指向私有函數(shù)的指針,該函數(shù)是展示為共有的方法。
應(yīng)用var orderModule = (function() { var orderNum = 1; function getNum() { return orderNum; } function addNum() { orderNum = orderNum + 1; } function subNum() { orderNum = orderNum > 1 ? orderNum - 1 : orderNum; } //將暴露的公有指針指向到私有函數(shù)和屬性上 return { get: getNum, add: addNum, sub: subNum } })(); orderModule.get();參考
《JavaScript設(shè)計(jì)模式》
JS設(shè)計(jì)模式系列文章JS設(shè)計(jì)模式之Factory(工廠)模式
JS設(shè)計(jì)模式之Singleton(單例)模式
JS設(shè)計(jì)模式之Facade(外觀)模式
JS設(shè)計(jì)模式之Module(模塊)模式、Revealing Module(揭示模塊)模式
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/100963.html
摘要:在模塊代碼底部,它會(huì)很容易指出哪些函數(shù)和變量可以被公開(kāi)訪問(wèn),從而改善可讀性。這是因?yàn)樗接泻瘮?shù)將繼續(xù)引用私有實(shí)現(xiàn),該模式不適用與公有成員,只適用于函數(shù)。引用私有變量的公有對(duì)象成員也遵守?zé)o補(bǔ)丁規(guī)則。 這是對(duì)Module模式的一個(gè)改進(jìn)版本。方便集中管理公有API,使公有API更簡(jiǎn)潔清楚。 var myRevealingModule = function () { var priv...
摘要:概念模式為更大的代碼提供了一個(gè)方便的高層次接口,能夠隱藏其底層的真是復(fù)雜性。參考設(shè)計(jì)模式設(shè)計(jì)模式系列文章設(shè)計(jì)模式之模塊模式揭示模塊模式設(shè)計(jì)模式之單例模式設(shè)計(jì)模式之外觀模式 概念 Facade模式為更大的代碼提供了一個(gè)方便的高層次接口,能夠隱藏其底層的真是復(fù)雜性??梢园阉氤墒呛?jiǎn)化API來(lái)展示給其他開(kāi)發(fā)人員。 優(yōu)缺點(diǎn) 優(yōu)點(diǎn) 簡(jiǎn)化接口 使用者與代碼解耦 易于使用 缺點(diǎn) 存在隱性成本,性...
摘要:定義限制類的實(shí)例化次數(shù)只能是一次。如果該實(shí)例不存在的情況下,可以通過(guò)一個(gè)方法創(chuàng)建一個(gè)類來(lái)實(shí)現(xiàn)創(chuàng)建類的新實(shí)例,如果實(shí)例已經(jīng)存在,它會(huì)簡(jiǎn)單返回該對(duì)象的引用。適用場(chǎng)景需要頻繁實(shí)例化然后銷毀的對(duì)象。頻繁訪問(wèn)數(shù)據(jù)庫(kù)或文件的對(duì)象。 定義 限制類的實(shí)例化次數(shù)只能是一次。 如果該實(shí)例不存在的情況下,可以通過(guò)一個(gè)方法創(chuàng)建一個(gè)類來(lái)實(shí)現(xiàn)創(chuàng)建類的新實(shí)例,如果實(shí)例已經(jīng)存在,它會(huì)簡(jiǎn)單返回該對(duì)象的引用。 適用場(chǎng)景 ...
摘要:對(duì)解耦是很有用對(duì)。設(shè)計(jì)模式系列文章設(shè)計(jì)模式之觀察者模式發(fā)布訂閱模式設(shè)計(jì)模式之工廠模式設(shè)計(jì)模式之單例模式設(shè)計(jì)模式之外觀模式設(shè)計(jì)模式之模塊模式揭示模塊模式 工廠模式 提供一個(gè)通用的接口來(lái)創(chuàng)建對(duì)象 示例 //Car構(gòu)造函數(shù) function Car(option) { this.doors = option.doors || 4 this.color = option...
摘要:觀察者模式定義設(shè)計(jì)模式中對(duì)的定義一個(gè)對(duì)象稱為維持一系列依賴于它觀察者的對(duì)象,將有關(guān)狀態(tài)的任何變更自動(dòng)通知給它們。如圖模式比較觀察者模式則多了一個(gè)類似于話題調(diào)度中心的流程,發(fā)布者和訂閱者解耦。 Obeserver(觀察者)模式 定義 《js設(shè)計(jì)模式》中對(duì)Observer的定義:一個(gè)對(duì)象(稱為subject)維持一系列依賴于它(觀察者)的對(duì)象,將有關(guān)狀態(tài)的任何變更自動(dòng)通知給它們。 《設(shè)計(jì)模...
閱讀 2154·2021-11-11 16:54
閱讀 1124·2021-10-12 10:12
閱讀 447·2019-08-30 15:43
閱讀 723·2019-08-29 13:15
閱讀 1150·2019-08-29 13:12
閱讀 1601·2019-08-26 12:09
閱讀 1729·2019-08-26 10:24
閱讀 2352·2019-08-26 10:15