这种隐藏类的方法是什么?

时间:2018-04-09 23:18:45

标签: javascript design-patterns

我实现了一个公开函数speach()的库,以创建具有特定公共API函数的对象。函数代理内部对象class Speach,我不会向最终用户公开,因此无法触及实现细节。只要我继续支持公开公开的API,我就可以稍后更改实施细节。

这个模式有名称吗?



class Speach {
  constructor() {
    // ...
  }

  browserSupportsFeature() {}

  loadAPI() {}

  voice(name) {
    // ...
  }

  speak(textToSpeak) {
    // ...
  }

  then(onFulfilled, onRejected) {
    // ...
  }
}

const speach = () => {
  const speach = new Speach();
  return {
    voice(name) {
      speach.voice(name);
      return this;
    },
    speak(textToSpeak) {
      speach.speak(textToSpeak);
      return this;
    },
    then(thenable) {
      speach.then(thenable);
      return this;
    }
  };
};




2 个答案:

答案 0 :(得分:1)

抽象。

抽象是指隐藏实现细节并仅将接口公开给客户端。只要外部接口保持不变,开发人员就可以随意更改底层实现。

答案 1 :(得分:0)

通过将范围限制在closure内来限制对变量的访问称为信息隐藏。

此实现基本上是the Module pattern