Шаблоны JavaScript - разница между литеральным шаблоном Facade и Object - PullRequest
2 голосов
/ 21 января 2012

Мне интересно, в чем разница между этими двумя паттернами.

Возможно, я ошибаюсь, но они, похоже, используют одну и ту же структуру для достижения интерфейса более высокого уровня с большим объемом кода.

Фасад:

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

Литерал объекта:

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

Если они действительно служат разным целям, когда мне их точно использовать?

1 Ответ

6 голосов
/ 21 января 2012

Тот факт, что они используют один и тот же синтаксис, не означает, что они имеют одну и ту же цель. Многие шаблоны проектирования имеют одинаковую реализацию, но имеют различное значение в зависимости от контекста.

Фасад инкапсулирует один или несколько объектов и обеспечивает более удобный API для клиента, скрывая неясности и усложняя ошибку. В вашем примере функция mobileEvent.stop() инкапсулирует два вызова JavaScript, которые должны быть объединены для достижения более высокого уровня поведения.

Литерал объекта на самом деле не шаблон, это просто способ определения одноразового объекта в JavaScript. Как видите, его можно использовать для реализации шаблона Facade и многих других.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...