在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ HTML/ 暴露模塊模式
中介者模式
MVVM
亨元模式
設(shè)計模式分類概覽表
ES Harmony
組合模式
CommonJS
jQuery 插件的設(shè)計模式
外觀模式
觀察者模式
建造者模式
構(gòu)造器模式
外觀模式
簡介
AMD
原型模式
設(shè)計模式的分類
觀察者模式
命名空間模式
代理模式
編寫設(shè)計模式
適配器模式
反模式
什么是設(shè)計模式
模塊化模式
MVC
Mixin 模式
裝飾模式
設(shè)計模式的結(jié)構(gòu)
單例模式
迭代器模式
命令模式
工廠模式
MVP
暴露模塊模式
惰性初始模式

暴露模塊模式

既然我們對模塊模式已經(jīng)有一些了解了,讓我們看一下改進版本 - Christian Heilmann 的啟發(fā)式模塊模式。 啟發(fā)式模塊模式來自于,當Heilmann對這樣一個現(xiàn)狀的不滿,即當我們想要在一個公有方法中調(diào)用另外一個公有方法,或者訪問公有變量的時候,我們不得不重復(fù)主對象的名稱。他也不喜歡模塊模式中,當想要將某個成員變成公共成員時,修改文字標記的做法。

因此他工作的結(jié)果就是一個更新的模式,在這個模式中,我們可以簡單地在私有域中定義我們所有的函數(shù)和變量,并且返回一個匿名對象,這個對象包含有一些指針,這些指針指向我們想要暴露出來的私有成員,使這些私有成員公有化。

下面給出一個如何使用暴露式模塊模式的例子:

var myRevealingModule = function () {

        var privateVar = "Ben Cherry",
            publicVar  = "Hey there!";

        function privateFunction() {
            console.log( "Name:" + privateVar );
        }

        function publicSetName( strName ) {
            privateVar = strName;
        }

        function publicGetName() {
            privateFunction();
        }

        // Reveal public pointers to 
        // private functions and properties

        return {
            setName: publicSetName,
            greeting: publicVar,
            getName: publicGetName
        };

    }();

myRevealingModule.setName( "Paul Kinlan" );

這個模式可以用于將私有函數(shù)和屬性以更加規(guī)范的命名方式展現(xiàn)出來。


var myRevealingModule = function () {

        var privateCounter = 0;

        function privateFunction() {
            privateCounter++;
        }

        function publicFunction() {
            publicIncrement();
        }

        function publicIncrement() {
            privateFunction();
        }

        function publicGetCount(){
          return privateCounter;
        }

        // Reveal public pointers to
        // private functions and properties       

       return {
            start: publicFunction,
            increment: publicIncrement,
            count: publicGetCount
        };

    }();

myRevealingModule.start();

優(yōu)勢

這個模式是我們腳本的語法更加一致。同樣在模塊的最后關(guān)于那些函數(shù)和變量可以被公共訪問也變得更加清晰,增強了可讀性。

缺點

這個模式的一個缺點是如果私有函數(shù)需要使用公有函數(shù),那么這個公有函數(shù)在需要打補丁的時候就不能被重載。因為私有函數(shù)仍然使用的是私有的實現(xiàn),并且這個模式不能用于公有成員,只用于函數(shù)。

公有成員使用私有成員也遵循上面不能打補丁的規(guī)則。

因為上面的原因,使用暴露式模塊模式創(chuàng)建的模塊相對于原始的模塊模式更容易出問題,因此在使用的時候需要小心。