贫血模型:
定义对象的简单属性值,对象实体不包括任何业务逻辑。
比如基于MVC开发的web服务中,许多对象实体属性的定义仅包括了一些get和set方法,不包括任何业务逻辑,业务逻辑存在统一的service层中去处理。
充血模型:
定义属性的同时也会定义方法,属性是可以通过某些方式直接得到属性值,通过在值对象中嵌入对应的业务逻辑获取属性值。
什么是ddd?
领域驱动设计(Domain-Driven-Design),是一种软件开发方法论,主要是用来指导如何解耦业务系统,划分业务模块,定义业务领域模型及其交互。
ddd组件:
Domain Primitive(DP)
primitive的定义:
dp是在一个特定领域,拥有精准定义的,可自我验证的,拥有行为的value object。
使用DP的三原则:
让隐性的概念显性化
让隐性的上下文显性化
封装多对象行为
实战--老应用重构的流程:
第一步:创建dp,收集所有dp行为
第二步:替换数据校验和无状态逻辑
第三步:创建新接口
第四步:修改外部调用
ddd的实体:
ddd的实体是拥有ID的域对象,除了拥有数据之外,同时拥有行为。
DDD的主要思想:
1.领域建模:领域建模是DDD的核心,目的是将业务抽象出来,通过对领域服务、领域对象、领域事件的定义,实现业务需求。
2.领域驱动架构:在DDD中有一套自己的分层架构,按照应用程序划分为四个层次,用户接口层、应用层、领域层、基础设施层,实现业务领域的划分。
3.领域事件驱动:领域事件是领域模型之间的一种交互方式。
DDD的实现流程?
确定业务领域
设计领域模型:实体、值对象、聚合、领域服务、事件。
统一使用语言
实现领域模型
应用架构设计