层次结构
.表现层
.业务层
.业务层外观(Service)
.业务服务层(流程控制)
.领域对象仓库层(Dao)
.领域对象层(Do)
.持久层
.数据访问层
.数据库
领域模型4种模型
1.失血模型
.Do只有属性及其getter/sertter方法,没有任务业务逻辑。
.缺点:行为与数据分离,很多情况导致维护与理解困难。
2.贫血模型
. Do包含不依赖于持久化的领域逻辑;依赖于持久化的领域逻辑归于Service层。
. Service(业务逻辑,事物封装)
. DAO
. DO
. 优点:
. 各层单向依赖,结构清晰,易于实现和维护。
. 设计简单易行,底层模型非常稳定。
.缺点:Do部分的持久化逻辑放入Service层,不够OO。
. Service层过重。
3. 充血模型
. 与贫血模型类似,不同之处在于如何划分业务逻辑,绝大多业务逻辑放在DO(包括持久化逻辑)
Service层薄弱,只有事物额封装和少量业务逻辑,不与Dao层打交道。
. Service(事物封装)
. DO
. DAO
. 优点:
.符合OO
. Service层很薄,只充当facade的角色,不与Dao打交道。
. 缺点:
Dao和Do双向依赖.
4.胀血模型
. 取消Service层只有Do和Dao层,在DO的domain logic上封装事物。
.DO
.DAO
优点:分层简化、符合OO。
缺点: Do暴露给web层太多的信息,可能引起不必要的耦合。