Node.js如何实现多态性

Node.js how to implement polymorphism?

本文关键字:实现 多态性 js 何实现 Node      更新时间:2023-09-26

我正在尝试使用node.js和其他相关技术来实现一个应用程序。从java出发,多态性很自然,但对于经典程序员来说,节点的工作方式不同。

应用程序将在用户提供的运行时加载新代码。为了让主要核心使用这个代码,"我们"需要就某种约定达成一致。知道Node有多新,我并不感到惊讶,因为我没有找到答案。问题是这个问题在JS中也相当模糊。

要求:

  1. 强有力的脱钩
  2. 在运行时加载新代码
  3. 该解决方案应该适用,这样我就可以与浏览器共享尽可能多的代码

更新:

  1. 我确实摆弄过鸭子类型,我也遇到过Clojure关于基于协议的实现的想法
  2. 我很感激答案中的一些代码

JavaScript,就像大多数其他脚本语言一样(即没有编译时类型检查),通过鸭子类型来实现多态性。

如果你来自Java领域,你可能正在寻找依赖注入,它通常提供超级解耦。您可能可以使用谷歌为Node找到一个好的依赖注入框架,比如这个。

尽管说实话,您可能只需要制作一个Javascript/Coffeescription文件来完成所有的连接和配置加载。

由于Javascript的灵活性,几乎实现了每一种形式的多态性(特性、接口、继承、原型)。每种方法都有其优点/缺点,但几乎都是运行时检查(如果有的话),而不是编译时。

就我个人而言,我可能只会使用Coffeescriptions继承、traits.js或Javascript的内置原型链。

编辑:但是,由于您谈论的是允许用户扩展系统,因此回调和/或自定义事件是首选方法(即高阶功能编程和事件总线)。如果你正在寻找像插件系统这样实质性的东西,那么loader js看起来相当完整(向@Larry Battle致敬)。