Dependency injection DI的使用模式/用例或何时开始使用它

Dependency injection DI的使用模式/用例或何时开始使用它,dependency-injection,domain-object,Dependency Injection,Domain Object,我不确定应该在应用程序中使用DI的用例。我知道像PlaceService或CalculationService等注入服务非常适合,但我是否也应该像用户那样使用DI创建域对象?如果用户只有一个构造函数需要名字和姓氏,该怎么办。这可以用DI解决吗 我应该使用DI来创建集合/列表接口的实例,还是这纯粹是过激的行为 我主要使用guice。通常,我使用的规则是支持依赖项注入,除非对象可以用纯原语值构造,并且对象被另一个实现替换的可能性极小 但是,对于域对象,特别是如果您的对象不构成一个,即对象只是一袋袋的

我不确定应该在应用程序中使用DI的用例。我知道像
PlaceService
CalculationService
等注入服务非常适合,但我是否也应该像
用户那样使用DI创建域对象?如果
用户
只有一个构造函数需要名字和姓氏,该怎么办。这可以用DI解决吗

我应该使用DI来创建集合/列表接口的实例,还是这纯粹是过激的行为


我主要使用guice。

通常,我使用的规则是支持依赖项注入,除非对象可以用纯原语值构造,并且对象被另一个实现替换的可能性极小

但是,对于域对象,特别是如果您的对象不构成一个,即对象只是一袋袋的getter和setter,那么让对象(例如,可以将其自身持久化到数据存储等)是很有用的。对于这些类型的对象,依赖项注入和可以是一个强大的组合


Guice有一个特定的解决方案,可以解决用户对象之类的对象所引起的问题,尽管在其他轻量级容器或使用构建器或适配器模式时也可能出现类似的问题。

ig0774的答案是一个很好的起点。此外,我想提供以下经验法则:

在的术语中,您应该为服务进行DI,但不应为实体或价值对象进行DI

换句话说,DI非常适合概念上长期存在的无状态对象,通常使用一个或一个已知的数字