标签:
实体是业务系统中分析得出的业务对象,诸如用户、产品之类的,它们需持久于数据层,有自己的属性。
但实体并不是数据展现层所需的数据载体,它只是一种业务载体。它定义的关于本实体的业务方法,并将这些业务方法所对本实体的改变持久化到数据层。
实体不提供直接修改其内部业务属性的方法,也就是说,不再有setter方法。改变内部业务属性只能是有能表达业务、并能通用语言表达的方法来处理。
实体不提供直接读取其内部业务属性的方法,它是通过值对象对外发布其业务属性(或限制访问)。
是一种承载数据的不可变的对象。
一般可以这么理解,它只是用来传输数据的,它与具体的业务模型无关。一般情况下它是实体的数据展现形式,因为实体只是业务载体,并不存在展示数据的能力,所以实体要想给展示层显示数据,那么就要转换成一个值对象,让展示层渲染值对象即可,同样,这也解决了如何不使用osiv的问题。
有一些业务操作在不好归结为实体方法的时候,那么它就极有可能是领域服务。
又或者有一大流程的、大量业务规则的、并且不好归结为实体方法的时候,那么它一定是领域服务。
领域服务有以下几个特征:
过份强调领域服务会导致贫血模型,那么什么时候才是使用实体方法,什么时候才是使领域服务呢?
经典的观察者模式,但是在这里却是相当有用的。主要体现在以下几个方面:
领域事件给开发大型的、复杂的系统提供了细化业务的可能。
标签:
原文地址:http://my.oschina.net/kut/blog/407161