JacaScript 私有變量(四)增強的模塊模式

有人進一步改進了模塊模式,即在返回對象之前加入對其增強的代碼。這種增強的模塊模式適合那些單例必須是某種類型和的實例,同時還必須添加某些屬性和(或)方法對其加以增強的情況。

var singleton = function() {
    // 私有變量和私有函數
    var privateVariable = 10;

    function privateFunction() {
        return false;
    }

    // 創建對象
    var object = new CustomType();

    // 添加特權/公有屬性和方法
    object.publicProperty = true;

    object.publicMethod = function() {
        privateVariable++;
        return privateFunction();
    }

    return object;
}

如果 application 對象必須是 BaseComponent (不用去關心 BaseComponent 代碼是如何實現的) 實例:


var application = function() {
    // 私有變量和函數
    var components = new Array();

    // 初始化
    components.push(new BaseComponent());

    // 創建 application 的一個副本
    var app = new BaseComponent();

    app.getComponentCount = function() {
        return components.length;
    }

    app.registerComponent: function(component) {
        if(typeof component == "object") {
            components.push(component);
        }
    }

    // 公共
    return app;
}();

在這個重寫后的應用程序(application)單例中,首先也是像前面例子中一樣定義了私有變量。主要不同之處在于命名變量 app 的創建過程,因為它必須是 BaseComponent 的實例。

這個實例實際上是 application 對象的局部變量版。此后,我們又為 app 對象添加了能夠訪問私有變量的公有方法。

最后一步是返回 app 對象,結果仍然是將它賦值給全局變量 application。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,948評論 18 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,373評論 25 708
  • 單例模式(SingletonPattern)一般被認為是最簡單、最易理解的設計模式,也因為它的簡潔易懂,是項目中最...
    成熱了閱讀 4,293評論 4 34
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,766評論 18 399
  • apt-get install pigz 壓縮: tar cvf - 目錄名 | pigz -9 -p 24 > ...
    殘風疏影閱讀 1,073評論 0 0