【问题标题】:node.js good way of inheritancenode.js 很好的继承方式
【发布时间】:2012-10-31 20:33:51
【问题描述】:

这被认为是好的代码,有没有更清洁/更好的方法?所以子类对如何从存储机制中实际获取数据一无所知。只是能够使用这些方法来组合功能。

base.js

function Base() {}

Base.prototype.getInternal = function(id, cb) {}

module.exports = Base;

child.js

function Child() {}
util.inherits(Child, Base);

Child.prototype.get = function(id, cb) {
  this.getInternal(id, cb);
}

module.exports = new Child();

test.js

var Child = require('child');
Child.get('id', function(err, result) {
});

【问题讨论】:

标签: node.js inheritance prototype commonjs


【解决方案1】:

代码看起来不错。我喜欢 Node.js 的这种继承方法,但是您也可以查看一段代码,例如 John Resig's simple inheritance port

至于寻找封装存储方法的最佳方法,您可以在传入存储方法的地方使用依赖注入。这是一篇关于它的不错的文章。 http://merrickchristensen.com/articles/javascript-dependency-injection.html

【讨论】:

    【解决方案2】:

    您成功应用了原型继承。没什么好说的了。但是,还有另一种方法称为功能继承。 Julien Richard-Foy 令人信服地认为功能继承可能更可取。

    在 Java 这样的基于类的语言中,您肯定会广泛使用继承。然而,在基于原型的语言 JavaScript 中,广泛使用继承并不常见。 (可能是因为很多人不了解原型的概念,或者可能是因为 JavaScript 缺少太多你期望从面向对象语言中获得的附加特性。我不能说。) JavaScript 开发人员经常不使用语言特性求助于适配器、装饰器和代理等设计模式。

    一个非常重要的设计模式是依赖注入。正如 Charlie Key 已经说过的那样,在您的情况下,这种模式可能是继承的更好选择。如果您想研究在 node.js 中使用依赖注入,请阅读 excellent article 或查看 Fire Up! - 我实现的依赖注入器。

    【讨论】:

      猜你喜欢
      • 2010-11-07
      • 1970-01-01
      • 1970-01-01
      • 2012-02-12
      • 2015-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多