2012-01-20 11 views
2

これらの2つのパターンの違いは何ですか?JavaScriptのパターン - ファサードとオブジェクトのリテラルパターンの違い

私は間違っているかもしれませんが、同じ構造を使用してより大きいコード本体とのより高いレベルのインターフェースを実現しているようです。

Facadeパターン:

var mobileEvent = { 
    // ... 
    stop: function (e) { 
    e.preventDefault(); 
    e.stopPropagation(); 
    } 
    // ... 
}; 

オブジェクトリテラル:彼らは本当に異なる目的を果たす場合

var myObject = { 
    property1:"something", 
    property2:"something else", 
    method1:function(){ 
     console.log('hello world'); 
    } 
}; 

が、私はそれらを正確に使用する必要がありますか?

+2

ファサードパターンは、単にオブジェクトリテラル構文でオブジェクトを作成していると言われていますか? – Esailija

答えて

6

同じ構文を使用していても、同じ目的があるわけではありません。多くのデザインパターンはまったく同じ実装を持ちますが、コンテキストに基づいて異なる意味を持ちます。

ファサードは曖昧さを隠し、それが難しくミスを犯すすること、1つまたは複数のオブジェクトをカプセル化し、クライアントのために簡単にAPIを提供します。あなたの例では、mobileEvent.stop()関数は、いくつかのより高いレベルの動作を達成するために一緒に行かなければならない2つのJavaScript呼び出しをカプセル化します。

オブジェクトリテラルは実際にパターンではなく、JavaScriptでワンタイムオブジェクトを定義する単なる方法です。ご覧のように、ファサードパターンなどを実装するために使用できます。

関連する問題