我想知道这两种模式之间有什么区别。
我可能会弄错,但他们似乎使用相同的结构来实现更大级别的代码更高级别的接口。
外观模式:
var mobileEvent = {
// ...
stop: function (e) {
e.preventDefault();
e.stopPropagation();
}
// ...
};
对象文字:
var myObject = {
property1:"something",
property2:"something else",
method1:function(){
console.log('hello world');
}
};
如果它们真的用于不同目的,我应该何时使用它们?
答案 0 :(得分:6)
事实上,他们使用相同的语法并不意味着他们有相同的目的。许多设计模式具有完全相同的实现,但基于上下文具有不同的含义。
Facade 封装了一个或多个对象,为客户提供了更简单的API,隐藏了晦涩难懂的内容并使其更难犯错误。在您的示例中,mobileEvent.stop()
函数封装了两个必须一起进行的JavaScript调用,以实现更高级别的行为。
对象文字实际上不是一种模式,它只是一种在JavaScript中定义一次性对象的方法。如您所见,它可用于实现 Facade 模式和许多其他模式。