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

ステップアップのための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());

利点

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

ステップアップのためのJavaScriptデザインパターン入門」記事一覧

[/aside]

五十川 洋平(Yohei Isokawa)

五十川 洋平(Yohei Isokawa)

フロントエンドエンジニア/面白法人カヤックなどのWeb制作会社に勤務したのち、故郷の新潟に戻り独立。JSフレームワークAngularやFirebase、Google Cloud Platformを使ったWebアプリ開発が得意。 また、Udemyのプログラミング解説の講師、writer.appの自主開発や上越TechMeetupの主催などを行っています。

プロフィール

©Copyright 2022 Yohei Isokawa All Rights Reserved.