我注意到有时我需要将依赖项添加到父类及其父类等等,只是因为子类需要它。这是代码味道吗?父类仅因为子类需要信息而需要信息是否合理?
特别是在我们的 [slightly 贫血] DDD 风格中,这似乎发生在应用程序服务(域边界)需要来自应用程序层的信息以传递给域服务时。当域服务需要新的依赖项时,向调用特定域服务和所有相关测试的应用程序服务添加依赖项是非常痛苦的。
我注意到有时我需要将依赖项添加到父类及其父类等等,只是因为子类需要它。这是代码味道吗?父类仅因为子类需要信息而需要信息是否合理?
特别是在我们的 [slightly 贫血] DDD 风格中,这似乎发生在应用程序服务(域边界)需要来自应用程序层的信息以传递给域服务时。当域服务需要新的依赖项时,向调用特定域服务和所有相关测试的应用程序服务添加依赖项是非常痛苦的。
是的,它是一种气味。如果您的子类需要一些依赖项,则将依赖项直接注入子类。并让父类只知道(即依赖)孩子。
顺便说一句,您确定在您的情况下依赖项已传递给域服务吗?依赖是依赖对象实现其功能所需的特定服务。在您的情况下,看起来简单数据已传递给域服务。
是的,这是一种设计气味,您的类型应该只采用他们需要的最小依赖项。如果他们需要一个需要其他依赖项的服务,那么应该将这些依赖项注入到服务中,而不是使用该服务的类型。
如果您使用的是 IoC 容器,它将为您处理这些依赖链。如果你需要在运行时实例化一个类型的新实例,那么你应该注入工厂类型。