在OOP Node.js框架中保证接口是否为Danf?

在Danf中,如果我定义了两个类:

// lib/server/listener.js 'use strict'; /** * Expose `Listener`. */ module.exports = Listener; /** * Initialize a new listener. */ function Listener() { this._listener; } Listener.defineImplementedInterfaces(['listener']); /** * @interface {listener} */ Listener.prototype.update = function() { // Do something... this.doUpdate(); } Listener.prototype.doUpdate = function() { // Do something... } 

 // lib/server/notifier.js 'use strict'; /** * Expose `Notifier`. */ module.exports = Notifier; /** * Initialize a new notifier. */ function Notifier() { this._listener; } Notifier.defineImplementedInterfaces(['notifier']); Notifier.defineDependency('_listener', 'listener'); /** * @interface {notifier} */ Notifier.prototype.notify = function(notifier) { listener.update(); // listener.doUpdate(); // Is it possible? } Object.defineProperty(Notifier.prototype, 'listener', { set: function(listener) { this._listener = listener; } }); 

使用以下configuration:

 // config/server/config/interfaces.js 'use strict'; module.exports = { listener: { methods: { update: { arguments: ['string/value'] } } }, notifier: { methods: { notify: {} } } }; 

 // config/server/config/services.js 'use strict'; module.exports = { listener: { class: 'listener' }, notifier: { class: 'notifier', properties: { listener: '#listener#' } } }; 

我是否可以在通知程序中调用监听程序的“doUpdate”方法,即使我没有在接口“listener”中指定它?

在Danf中 ,当你定义Notifier.defineDependency('_listener', 'listener'); ,在通知程序使用的侦听器上创build一个代理。 此代理阻止您使用接口listener指定的内容。

总而言之,是的,接口是确保的,不会在通知器中调用方法doUpdate

但是,由于此function需要大量的性能(因为它不是内置的JavaScriptfunction),所以只能在debugging模式下启用 。