Jump to the content

ステップアップのためのJavascriptデザインパターン入門(4) - リビーリングモジュールパターン

JavaScript

ステップアップのためのJavascriptデザインパターン入門(4) - リビーリングモジュールパターン

今回はリビーリングモジュールパターンを紹介します。

リビーリングモジュールパターン

このパターンはクリスチャン・ヘイルマンという人による、モジュールパターンを改良したパターンです。 全ての関数と変数をプライベートスコープ内で定義し、パブリックメンバとして公開したいプライベートメンバへのポインタを持つ無名オブジェクトを返します。

var myRevealingModule = function() {

    var privateVar = 'Hoge',
        publicVar = 'Foo';

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

    function publicSetName(strName) {
        privateName = strName;
    }

    function publicGetName() {
        privateFunction();
    }

    // プライベートな関数やプロパティへのポインタを公開する
    return {
        setName: publicSetName,
        greeting: publicVar,
        getName: publicGetName
    };

};

myRevealingModule.setName('Bar');

このパターンでは、プライベートな関数やプロパティに固有の命名体型による名前をつけて外部に公開することも出来ます。


var myRevealingModule = function() {

    var privateCounter = 0;

    function privateFunction() {
        privateCounter++;
    }

    function publicFunction() {
        publicIncrement();
    }

    function publicIncrement() {
        privateFunction();
    }

    function publicGetCount() {
        return privateCounter;
    }

    // プライベートな関数やプロパティへのポインタを公開する。
    return {
        start: publicFunction,
        increment: publicIncrement,
        count: publicGetCount
    };

};

var module = myRevealingModule();
module.start();
console.log(module.count());

利点

このパターンによりプログラムの構文は一貫します。また、どの関数や変数にパブリックにアクセス可能にするかをモジュールの終わりの部分で指定しやすくなり、可読性が向上します。

注目記事

最近の記事

ぼくが書いてます

イソップ

フロントエンドエンジニア

イソップ

ページの先頭に戻る

Search results

×