首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将需要反向引用的协作者注入构造函数

如何将需要反向引用的协作者注入构造函数
EN

Software Engineering用户
提问于 2018-03-23 22:49:05
回答 2查看 81关注 0票数 0

按照Hevery的建议,将合作者注入构造函数而不是构造函数体内的新东西,当协作者需要对其所有者进行反向引用时,如何优雅地这样做,而不使用邪恶的'init‘方法(这又违反了Hevery的可测试代码的最佳实践)。

例如。

代码语言:javascript
复制
    export class Model {
    constructor( history ) {
      this._history = history; // But history needs to know Model too
      history.model = this;    // Is it just as simple as this? Feels awkward
      ...
    }
    ...
   }

代码语言:javascript
复制
    export class Model {
    constructor() {
      this._history = new History(this); // But new'ing things here reduces testability
      ...
    }
    ...
   }
EN

回答 2

Software Engineering用户

回答已采纳

发布于 2018-03-23 22:54:09

我认为这是一个只需要在构造函数中创建实例( new up)的例子。如果这两件事没有对方就不能存在,而且不需要使用多态性,那么传递依赖关系是没有意义的。

否则,需要打破模型和历史之间的循环依赖关系。

票数 0
EN

Software Engineering用户

发布于 2018-03-23 23:24:17

您可以注入一个工厂而不是一个实例:

代码语言:javascript
复制
export class Model {
    constructor(HistoryFactory factory) {
      this._history = factory.createHistory(this);
      ...
    }
    ...
}

但我想米斯科会建议你摆脱循环依赖。

票数 3
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/368237

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档