贫血模型就是模型对象之间存在完整的关联(可能有多余的关联),但对象只有get set方法,整个对象就是一个数据容器,所有的业务方法在一个无状态的service类中实现。
贫血模型常见包结构:
包含的包:
dao:负责持久化逻辑
model:包含数据对象,是service操纵的对象
service:放置所有的服务类,其中包含了所有的业务逻辑
facade:提供对UI层访问的入口
优点:简单,开发迅速,事务(每一个service的每个方法)边界清楚。
缺点:所有业务都在service中,业务复杂时service会越来越大。所有业务放在service中是一个过程化的设计,业务会在多个service的多个方法中重复。添加新UI时难以保持业务逻辑一致
领域模型构造
包含的包:
infrastructure: 代表基础设施层,一般负责对象的持久化。
domain:代表领域层。domain包中包括两个子包,分别是model和service。model中包含模型对 象,Repository(DAO)接口。它负责关键业务逻辑。service包为一系列的领域服务,之所以需要service,按照DDD的观点,是因为领域中的某些概念本质是一些行为,并且不便放入某个模型对象中。比如转帐操作,它是一个行为,并且它涉及三个对 象,fromAccount,toAccount和TransferTransaction,将它放入任一个对象中都不好。
application: 代表应用层,它的主要提供对UI层的统一访问接口,并作为事务界限