2012-11-17 17 views
10

私はいくつかのプロジェクトで、の代わりにSingleton Patternを使用し、その逆もあります。モジュールパターンとシングルトンパターンの違いは?

Module PatternSingleton Patternの違いは何ですか?

+4

これを見てください:http://addyosmani.com/resources/essentialjsdesignpatterns/book/#designpatternsjavascript – Teemu

+1

@テームこれは良い文書ですが、それらの間で異なっているわけではありません。 –

+0

ナンセンスの異なる名前または実装ですか? –

答えて

7

Module patternは、一般的なメカニズムのコードをモジュール化したものです。コンストラクタとプロトタイプメソッドのさまざまなグループを独立して定義できるので、いくつかのファイルに1つの "クラス"を分割するのは非常にうまくいきます。各モジュールは、通常、静的なローカル変数を作成するためにクロージャ内にラップされます。これはモジュールパターンを公開しています。

Singleton patternは、インスタンス作成の制限を指します。多くの場合、lazy initialisationを使用しています。

もちろん、モジュールパターンをシングルトンパターン(Wikipedia article参照)の特殊化と見なすことができます。コンストラクタとそのプロトタイプオブジェクトは、「単一インスタンス」の一部を取ります。

しかし、それらを「独立して」組み合わせることもできます。シングルトンアプローチを使用するクラスを定義するモジュール。

+2

'モジュールパターン 'を'シングルトンパターン 'として使うのは正しいですか? –

+1

確かに、クラスを一切持たずにただ一つのシングルトンオブジェクトを作成するモジュールを作ることもできます(よりプロトタイプ的なアプローチです)。 – Bergi

+0

@Bergi私はこれに追加する質問がありました。パターン 'Utilities.game_manager = {functionName: function(){var1、var2 ...}、...}; 'モジュールパターンと同じくらい変数を隠します(つまり、Utilities.game_managerの関数プロパティ内に変数を表示しません)。 。モジュールパターンとの違いはありますか?つまり、Revealing Module Patternは、隠れ変数を公開する関数を返しますが、私はちょうど示したパターンでそれを行うことができます。 – Growler

関連する問題