2015-04-08 51 views
1

我想问问谁负责设置注入的依赖状态?依赖注入和状态设置

例如,当类A依赖于类B时,实例A的责任是设置实例B还是应该在其他地方完成?为什么?我有一个Context类,它处理与给定图表的交互和状态,例如,你可以在两个系列之间切换。然而,这个类还通过将它们委托给其他(注入)类来设置图表的外观和显示数据。目前,Context构造函数根据其构造函数参数设置其依赖关系状态(例如:突出显示图表上的一点,指示要显示的系列等)。我不确定这种设计是否合适,并希望更深入地了解正确的方法。编程语言是Javascript(如果它很重要)。

谢谢, 彼得

回答

1
当A类取决于B类上

,例如是A的设置实例B或责任,它应该在其他地方呢?

如果A将负责设立B的,这将使一个违反Dependency Inversion Principle(DIP),上面写着:

高层模块不应该依赖于低级别的模块。 都取决于抽象。

DIP是依赖注入模式背后的驱动力。

但是如果A不能负责创建B,谁是?这个问题的答案的问题是:在Composition Root

物A组合物根是在模块组合在一起的应用 一个(优选地)独特的位置。

使用组合根目录是保持A和B(以及图中的所有内容)不受不同模块依赖的唯一方法。