领域驱动设计--第二天

领域服务

什么是领域服务,DDD书中是说,有些类或者方法,放实体A也不好,放实体B也不好,因为很可能会涉及多个实体或者聚合的交互(也可能是多个相同类型的实体),此时就应该吧这些代码放到领域服务中,领域服务其实就跟传统三层的BLL很相似,只有方法没有属性,也就没有状态,而且最好是用动词命名,service为后缀.

以下是个人的几个理解:

1. 领域服务可以调用repository,但最好repository不要去调用领域服务

2. 在领域驱动设计中有三种服务,为了便于理解,对比下这三种服务的区别

    应用服务:直接面对外部客户调用或者交互的服务,应用服务可以依赖repository与领域服务

   领域服务:封闭业务逻辑并且不应该属于实体业务逻辑中

   基础设施服务:更多是底层比如抽象技术层服务(如email provider之类


可参考下这个:http://dddsample.sourceforge.net/characterization.html

你可能感兴趣的:(领域驱动设计)