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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了这种隐藏类的方法是什么?相关的知识,希望对你有一定的参考价值。

我已经实现了一个库,它公开了一个函数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;
    }
  };
};
答案

抽象。

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

另一答案

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

这个实现基本上是the Module pattern

以上是关于这种隐藏类的方法是什么?的主要内容,如果未能解决你的问题,请参考以下文章

Sphinx、reStructuredText 显示/隐藏代码片段

使用 add() 方法添加片段不会隐藏以前的片段

java中 什么叫隐藏(Hide)? 最好给个例子

读取外部类的隐藏私有字段

Android中,FragmentTransaction类的replace()方法的作用是啥?

Kotlin 类的调用方法