JavaScript模式 - Facade和Object文字模式之间的差异

时间:2012-01-20 20:01:35

标签: javascript design-patterns object

我想知道这两种模式之间有什么区别。

我可能会弄错,但他们似乎使用相同的结构来实现更大级别的代码更高级别的接口。

外观模式:

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

对象文字:

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

如果它们真的用于不同目的,我应该何时使用它们?

1 个答案:

答案 0 :(得分:6)

事实上,他们使用相同的语法并不意味着他们有相同的目的。许多设计模式具有完全相同的实现,但基于上下文具有不同的含义。

Facade 封装了一个或多个对象,为客户提供了更简单的API,隐藏了晦涩难懂的内容并使其更难犯错误。在您的示例中,mobileEvent.stop()函数封装了两个必须一起进行的JavaScript调用,以实现更高级别的行为。

对象文字实际上不是一种模式,它只是一种在JavaScript中定义一次性对象的方法。如您所见,它可用于实现 Facade 模式和许多其他模式。