J道解惑
XX.service.a.Y
是不是应该把接口都放在子系统一个包中,就不用各自放在自己的模块中?因为接口只起到对下层实现隐藏细节的作用。
2:四色图中MI粉色部分与粉色部分的聚合是否代表service的注入那?比如一个MI与另外两MI之间是聚合关系,是否说明另外两个服务被注入到一个服务中那?
如果你试图在service包下面深挖洞,广积粮,那么你可能没有完全理解DDD。
参看JiveJdon3的service设计。
>四色图中MI粉色部分与粉色部分的聚合
不是叫聚合,叫依赖,标识MI的依赖关系。
[该贴被banq于2007年03月06日 10:12修改过]
如果是一个很大的系统,从归类原则包是应该分为service.fourmservice.wiki service.blogs这几个子包,但是事情不能只从Service出发,按照DDD,Domain Model是核心,起基本决定作用,因此service是围绕Domain Model的,我的经验是:通常一个实体Model对应一个service,service分类是取决于Model的,否则,不能围绕Domain Model分类,Service就难于管理和维护。
可以想像将Service看成Model的一个行为接口,以前MF曾经指责这种Model为贫血模型或者失血模型,现在有了Evans DDD,我们可以完整的理解胖模型的概念了,而且DDD对SOA的实现提供了理论分析支持,这些都是绕口舌的东西,可以不管它,但是必须注意的就是:service只是一个行为性质接口,不要将其做复杂,否则过去误用无态EJB那样导致过程化编程,业务核心是应该在Domain Model,而不是在service,知易行难,所以也是我不主张在service深挖洞的原因。
个人意见,欢迎探讨。