2010-06-17 21 views
3

我不确定在应用程序中应该使用哪种用例。我知道像PlaceServiceCalculationService等注入服务非常适合,但我是否也应该使用DI创建我的域对象,如User?如果User只有一个构造函数需要第一个和最后一个名字,那该怎么办? DI可以解决吗?DI的使用模式/使用案例或何时开始使用它

我应该使用DI为Set/List接口创建实例吗?或者这是纯粹的矫枉过正?

我主要使用guice。

回答

2

我使用的规则通常是倾向于依赖注入,除非对象可以用纯原始值构造,并且对象可能被另一个实现替换的可能性很小。

但是,对于域对象,特别是在对象不构成对象的情况下,即对象只是获取者和设置者的袋子的情况下,例如,可以将对象保存到数据存储库等等。对于那些类型的对象,依赖注入和Salve可以是一个强大的组合。

对于类似于您的User对象(称为AssistedInject)的对象所带来的问题类型,Guice有一个特定的解决方案,但对于其他轻量级容器或使用某些构建器或适配器模式也可能有类似的情况。

+0

+1请参阅我的回答获取更多指导。 – 2010-06-18 03:28:24

4

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

Domain-Driven Design的术语,你应该为DI服务,而不是实体值对象

换句话说,DI符合概念上长寿命,无状态的对象,其中通常使用一个或一个已知的数字。