0

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

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();

测试.js

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

2 回答 2

0

代码看起来不错。我喜欢 Node.js 的这种继承方法,但是您也可以查看一段代码,例如John Resig 的简单继承端口

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

于 2012-11-01T02:28:01.163 回答
0

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

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

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

于 2014-04-24T21:16:24.413 回答