摘要:模塊模式概念模式最初被定義為一種在傳統(tǒng)軟件工程中為類提供私有和共有封裝的方法。應(yīng)用將暴露的公有指針指向到私有函數(shù)和屬性上參考設(shè)計(jì)模式設(shè)計(jì)模式系列文章設(shè)計(jì)模式之工廠模式設(shè)計(jì)模式之單例模式設(shè)計(jì)模式之外觀模式設(shè)計(jì)模式之模塊模式揭示模塊模式
Module(模塊)模式 概念
Module模式最初被定義為一種在傳統(tǒng)軟件工程中為類提供私有和共有封裝的方法。
通過這種方式,能夠使一個(gè)多帶帶的對(duì)象擁有共有/私有方法和變量,從而屏蔽來自全局作用局的特殊部分。
產(chǎn)生的結(jié)果是: 函數(shù)名與在頁面上其他腳本定義的函數(shù)沖突的可能性降級(jí)
實(shí)現(xiàn)一個(gè)簡單的計(jì)數(shù)器
orderModule外的代碼無法直接讀取getNum(),addNum()和subNum(),orderNum變量實(shí)際上是與全局作用域隔離的,因此它表現(xiàn)的就像是一個(gè)四有變量,他的存在被局限于模塊的閉包內(nèi),因此唯一能訪問其作用域的代碼就是這三個(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)簡單定義所有的函數(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://www.ezyhdfw.cn/yun/100963.html
摘要:在模塊代碼底部,它會(huì)很容易指出哪些函數(shù)和變量可以被公開訪問,從而改善可讀性。這是因?yàn)樗接泻瘮?shù)將繼續(xù)引用私有實(shí)現(xiàn),該模式不適用與公有成員,只適用于函數(shù)。引用私有變量的公有對(duì)象成員也遵守?zé)o補(bǔ)丁規(guī)則。 這是對(duì)Module模式的一個(gè)改進(jìn)版本。方便集中管理公有API,使公有API更簡潔清楚。 var myRevealingModule = function () { var priv...
摘要:概念模式為更大的代碼提供了一個(gè)方便的高層次接口,能夠隱藏其底層的真是復(fù)雜性。參考設(shè)計(jì)模式設(shè)計(jì)模式系列文章設(shè)計(jì)模式之模塊模式揭示模塊模式設(shè)計(jì)模式之單例模式設(shè)計(jì)模式之外觀模式 概念 Facade模式為更大的代碼提供了一個(gè)方便的高層次接口,能夠隱藏其底層的真是復(fù)雜性??梢园阉氤墒呛喕疉PI來展示給其他開發(fā)人員。 優(yōu)缺點(diǎn) 優(yōu)點(diǎn) 簡化接口 使用者與代碼解耦 易于使用 缺點(diǎn) 存在隱性成本,性...
摘要:定義限制類的實(shí)例化次數(shù)只能是一次。如果該實(shí)例不存在的情況下,可以通過一個(gè)方法創(chuàng)建一個(gè)類來實(shí)現(xiàn)創(chuàng)建類的新實(shí)例,如果實(shí)例已經(jīng)存在,它會(huì)簡單返回該對(duì)象的引用。適用場景需要頻繁實(shí)例化然后銷毀的對(duì)象。頻繁訪問數(shù)據(jù)庫或文件的對(duì)象。 定義 限制類的實(shí)例化次數(shù)只能是一次。 如果該實(shí)例不存在的情況下,可以通過一個(gè)方法創(chuàng)建一個(gè)類來實(shí)現(xiàn)創(chuàng)建類的新實(shí)例,如果實(shí)例已經(jīng)存在,它會(huì)簡單返回該對(duì)象的引用。 適用場景 ...
摘要:對(duì)解耦是很有用對(duì)。設(shè)計(jì)模式系列文章設(shè)計(jì)模式之觀察者模式發(fā)布訂閱模式設(shè)計(jì)模式之工廠模式設(shè)計(jì)模式之單例模式設(shè)計(jì)模式之外觀模式設(shè)計(jì)模式之模塊模式揭示模塊模式 工廠模式 提供一個(gè)通用的接口來創(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
閱讀 1119·2021-10-12 10:12
閱讀 446·2019-08-30 15:43
閱讀 722·2019-08-29 13:15
閱讀 1148·2019-08-29 13:12
閱讀 1600·2019-08-26 12:09
閱讀 1728·2019-08-26 10:24
閱讀 2351·2019-08-26 10:15