2012-01-20 4 views
2

두 패턴의 차이점은 무엇입니까?JavaScript 패턴 - Facade와 Object 리터럴 패턴의 차이점

내가 실수 일지 모르지만 더 큰 코드 본문에 더 높은 수준의 인터페이스를 얻기 위해 동일한 구조를 사용하고있는 것으로 보입니다.

외관 패턴 :

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

동일한 구문을 사용한다고해서 동일한 목적을 갖고있는 것은 아닙니다. 많은 디자인 패턴은 정확히 동일한 구현을 갖지만 컨텍스트에 따라 다른 의미를 갖습니다.

Facade은 하나 이상의 개체를 캡슐화하고 클라이언트에게 API를 제공하여 불확실성을 숨기고 실수를 저 지르도록 만듭니다. 귀하의 예제에서 mobileEvent.stop() 함수는 몇 가지 상위 레벨 동작을 달성하기 위해 함께 사용해야하는 두 개의 JavaScript 호출을 캡슐화합니다.

개체 리터럴은 실제로 패턴이 아니며, 자바 스크립트에서 일회성 개체를 정의하는 방법 일뿐입니다. 보시다시피 Facade 패턴 및 기타 많은 기능을 구현하는 데 사용할 수 있습니다.

관련 문제