Domain Model描述了一个面向问题领域的对象组织结构,和行为逻辑。
Domain分两个含义:Domain Object和Domain Service。
Domain Object
概念上,一个Domain Object和普通的符合OO原则的对象有声明区别:
Domain Object是业务意义上,承载了业务数据,可以说Domain Object是有状态对象,从本质上说它直接来源于现实世界,没有技术层次上的考虑,
“符合OO原则的对象”是用OO方法分析得到的,是基于计算机领域技术的(这样的对象可以是无状态的);
但反过来,符合OO的对象不一定反应DOMAIN 的OBJECT。
技术上,Domain Object是指那些包含需要被透明持久化的属性,以及相关业务逻辑(体现在Use Case中)的POJO。而一个Domain Object包含了这些需要被持久化的业务数据,同时还包含了与之相关所有业务操作,并且有自己的继承体系。
Domain Service
Domain Service包含的商业逻辑包含了两部分:流程逻辑和控制逻辑。
1. 业务领域的流程逻辑(Business Process)。指一系列的业务行为,包括Domain Object的属性更新;数据库访问对象的创建、更新和删除操作以及对Domain Service中的某些包括Mail,网络等方法的访问。
2. 业务领域的控制逻辑(Business Rule)。产生一些控制信息,限制或者触发某些行为的执行;产生一些状态信息,提供给业务人员参考操作。
如果把一个系统看作是一个Mechanical组件的话,那么Domain Object就是其Structure,相当于人的骨架;而流程逻辑就是Power,相当于骨架上的肌肉;那么控制逻辑就是Control,相当于肌肉中的神经。