1. DDD整体结构分为四层:
- Infrastructure(基础实施层)
- Domain(领域层)
- Application(应用层)
- Interfaces(表示层,也叫用户界面层或是接口层),各个层面的做用下面介绍。
2. DDD: application 应用层
- 相对于领域层,应用层是很薄的一层,应用层定义了软件要完成的任务,要尽可能简单.
- 它不包含任务业务规则或知识, 为下一层的领域对象协助任务、委托工做。
- 它没有反映业务状况的状态,但它能够具备反映用户或程序的某个任务的进展状态。
- 对外为展示层提供各类应用功能(service)。
- 对内调用领域层(领域对象或领域服务)完成各类业务逻辑任务(task)。
- 这一层也很适合写一些任务处理,日志监控
3. DDD: domain 领域层
领域层主要负责表达业务概念,业务状态信息和业务规则。 Domain层是整个系统的核心层,几乎所有的业务逻辑会在该层实现。git
领域模型层主要包含如下的内容:github
- 实体(Entities):具备惟一标识的对象
- 值对象(Value Objects): 无需惟一标识的对象
- 领域服务(Domain Services): 一些行为没法归类到实体对象或值对象上,本质是一些操做,而非事物
- 聚合/聚合根(Aggregates,Aggregate Roots): 聚合是指一组具备内聚关系的相关对象的集合,每一个聚合都有一个root和boundary
- 工厂(Factories): 建立复杂对象,隐藏建立细节
- 仓储(Repository): 提供查找和持久化对象的方法
4. DDD: infrastructure 基础实施层
最底层(但与全部层进行交互) 向其余层提供 通用的 技术能力(好比工具类,第三方库类支持,经常使用基本配置,数据访问底层实现)面试
基础实施层主要包含如下的内容:算法
- 为应用层 传递消息(好比通知)
- 为领域层 提供持久化机制(最底层的实现)
- 为用户界面层 提供组件配置
- 基础设施层还可以经过架构框架来支持四个层次间的交互模式。
5. DDD: interfaces 用户界面层(或表示层)
最顶层 请求应用层以获取用户所须要展示的数据(好比获取首页的商品数据) 发送命令给应用层要求其执行某个用户命令(实现某个业务逻辑,好比用户要进行转帐)编程
用户界面层应该包含如下的内容:微信
- 数据传输对象(Data Transfer Object): DTO也常被称做值对象,VO,实质上与领域层的VO并不相同
- DTO是数据传输的载体,内部不该该存在任何业务逻辑,经过DTO把内部的领域对象与外界隔离。
- 装配(Assembler): 实现DTO与领域对象之间的相互转换,数据交换,所以Assembler几乎老是同DTO一块儿出现。
- 表面,门面(Facade): Façade的用意在于为远程客户端提供粗粒度的调用接口
- 它的主要工做就是将一个用户请求委派给一个或多个Service进行处理,也就是咱们常说的Controller。
文末
欢迎关注我的微信公众号:Coder编程 欢迎关注Coder编程公众号,主要分享数据结构与算法、Java相关知识体系、框架知识及原理、Spring全家桶、微服务项目实战、DevOps实践之路、每日一篇互联网大厂面试或笔试题以及PMP项目管理知识等。更多精彩内容正在路上~ 也分享一些杂文~数据结构
文章收录至 Github: github.com/CoderMerlin… Gitee: gitee.com/573059382/c… 欢迎关注并star~ 架构
dd