仅仅因为另一个[child]依赖项需要它而将依赖项添加到类中

时间:2012-11-05 19:27:24

标签: .net domain-driven-design

我注意到我需要将依赖项添加到父类及其父类等的情况,只是因为子类需要它。这是代码味吗?父类需要信息才合理,因为子类需要它吗?

特别是在我们[略微贫血]的DDD风格中,这似乎发生在应用服务(域边界)中,需要来自我们的应用层的信息传递给域服务。当域服务需要新的依赖项时,将依赖项添加到调用特定域服务的app服务以及所有相关测试是非常痛苦的。

2 个答案:

答案 0 :(得分:2)

是的,这是一种气味。如果您的子类需要一些依赖项,那么将依赖项直接注入子类。让父母阶层只知道(即依赖)孩子。

BTW 您确定将依赖传递给域名服务吗? 依赖是依赖对象完成其功能所需的特定服务。看起来在您的情况下,简单数据将传递给域服务。

答案 1 :(得分:2)

是的,它是一种设计气味,您的类型应该只采用他们需要的最小依赖性。如果它们需要一个需要其他依赖项的服务,那么应该将这些依赖项注入服务,而不是使用该服务的类型。

如果您正在使用IoC容器,它将为您处理这些依赖关系链。如果需要在运行时实例化类型的新实例,则应注入工厂类型。