为什么外观模式+揭示模块化模式“增加安全性”?

时间:2014-11-19 07:12:00

标签: javascript design-patterns facade

REFERENCE

根据参考:以下是Facade模式的更高级版本,它为内部方法增加了安全性。

问题: 老实说,他们的意思是增加安全性?那么,什么是不安全的例子呢?最后, security 和这个Facade +揭示模块模式的简单但真实的用例是什么?

var MyModule = ( function( window, undefined ) {

  // revealing module pattern ftw
  function MyModule() {

    function someMethod() {
      alert( 'some method' );
    }

    function someOtherMethod() {
      alert( 'some other method' );
    }

    // expose publicly available methods
    return {

      // in our normal revealing module pattern, we'd do the following:
      someMethod : someMethod,

      // in the facade pattern, we mask the internals so no one has direct access by doing this:
      // HOW DOES THIS MASK THE INTERNALS?  WHAT DO THEY MEAN BY ADDS SECURITY?
      someMethod : function() {
        someMethod();
      }

    };

  }

})(窗口);

1 个答案:

答案 0 :(得分:1)

这没有任何意义。真的没有。

  • 没有添加“安全性”。在开发Web应用程序时,安全性是一个完全不同的领域。
  • 与其他模式结合使用”,“易于实施”并不是真正的优势。正常的设计更简单。
  • 可以轻松修补内部”。当然。但是YAGNI。当你真正修补内部或外部垫片时,你仍然可以引入它。
  • 提供更简单的公共界面”。好吧,可以用于降低接口的复杂性,特别是如果内部方法具有未记录且预期不会暴露的其他参数。但是示例中的someMethod没有任何参数,所以这里没用。

实际上,揭示模块模式本身已经是一个外观。它定义了一些内部函数,然后将它们导出到模块对象上,模块对象的属性名称是外部接口。不需要额外的间接层。