JavaScript模式-Facade和Object文本模式之间的区别

JavaScript Patterns - Difference between the Facade and Object literal pattern

本文关键字:模式 之间 区别 文本 Object -Facade JavaScript      更新时间:2023-09-26

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

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

立面图案:

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

对象文字:

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

如果它们真的有不同的用途,我应该什么时候使用它们?

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

Facade封装一个或多个对象,并为客户端提供更容易的API,从而隐藏模糊性并使其更难出错。在您的示例中,mobileEvent.stop()函数封装了两个JavaScript调用,这两个调用必须结合在一起才能实现一些更高级别的行为。

Object literal实际上并不是一种模式,它只是在JavaScript中定义一次性对象的一种方式。正如您所看到的,它可以用于实现Facade模式和许多其他模式。