一些领域概念不适合被建模为对象,如果勉强把这些重要的领域功能归为实体或值对象的职责,那么不是歪曲了基于模型的对象的定义,就是认为的增加了一些无意义的对象。
Service
服务最终强调的是与其他对象的关系,它有几大特点:
- 它并不是实体和值对象的组成部分,它只定义客户做什么,往往是以一个活动来命名。
- 接口是根据领域模型的其他元素定义的。
- 它是无状态的,其实就是不用关心它的历史状态。
歧义
其实服务本身存在很多层歧义,我们在基础设置层,应用层都存在服务的相关概念。
银行可能有一个用于向客户发送电子邮件的应用服务,当客户的账户余额小于一个特定的临界值时,程序就向客户发送一封电子邮件。
基础设施层:这样的Service一般就是纯技术的服务,没有任何业务意义。例子中,我们把发送电子邮件的这样一个服务,单独封装在基础设施层,从而满足更多情况下调用。
领域层:负责确定是否满足模型的临界值。
应用层:负责通知的设置,存在持久化中的数据是无法自行去通知的,它借助领域服务判断结果后,从而调用基础设施邮件发送服务。
网友评论