领域模型驱动设计(DomainDrivenDesign)⼊门概述
软件开发要⼲什么:
1.反映真实世界要⾃动化的业务流程
2.解决现实问题
领域Domain
特指软件关注的领域
2.在不能充分了解业务领域的情况下是不可能做出⼀个好的软件
领域建模
领域模型驱动设计
1.分层架构
2.实体
3.值对象
4.服务
5.模块
6.聚合
7.⼯⼚
8.资源库
分层架构:
1.将领域模型相关的代码集中到⼀个层中,把它从⽤户界⾯、应⽤和基础设施代码中分隔开来
2.释放领域对象的显⽰⾃⼰、保存⾃⼰、管理应⽤任务等职责,让它专注于展现领域模型
3.复杂的程序切分成层
4.层中采⽤内聚的设计
5.层仅依赖于它底下的那层
实体entity:
有⼀类对象拥有唯⼀标识符
1.能够跨越系统的⽣命周期甚⾄能超越软件系统的⼀系列的延续性和标识符
2.这样的对象称为实体。
值对象-valueObject
1.对某个对象是什么不感兴趣,只关⼼它拥有的属性
2.⽤来描述领域的特殊⽅⾯、且没有标识符的⼀个对象,叫做值对象
3.能被简单的创建和丢弃,⽣命周期中不会被持久化
4.值对象可以被共享,值对象应该不可变
服务-rvice(⽐webrvice更细粒度服务描述)
1.领域中的⼀些动词,代表了领域中的⼀个重要的⾏为,却不属于任何对象
1)服务执⾏的操作涉及⼀个领域概念,这个领域概念通常不属于⼀个实体或者值对象
2)被执⾏的操作涉及到领域中的其他的对象
3)操作是⽆状态的
2.服务对象不再拥有内置的状态
3.服务对象担当重要的协调功能
4.开发通⽤语⾔时,领域中的主要概念被引⼊到语⾔中,语⾔中的名词很容易被映射成对象。
语⾔中对应那些名词的动词变成那些对象的⾏为。但是有些领域中的动作,它们是⼀些动词,看上去却不属于任何对象。它们代表了领
域中的⼀个重要的⾏为,所以不能忽略它们或者简单的把它们合并到某个实体或者值对象中。给⼀个对象增加这样的⾏为会破坏这个对象,
让它看上去拥有了本该属于它的功能。
模块
1.将相关领域模型提炼分类,分⽽治之
2.将⾼关联度的模型分组到⼀个模块以提供尽可能⼤的内聚(以能完整完成任务为准)
3.分层是⽔平划分
4.模块是垂直划分(Domain内部)
参考架构概述
1.领域驱动设计(DomainDrivenDesign)有⼀个官⽅的sample⼯程,名为DDDSample
3.该⼯程给出了⼀种实践领域驱动设计的参考架构
架构概述
详细架构
架构详解:Interfaces-接⼝层
1.该层包含与其他系统进⾏交互的接⼝与通信设施,在多数应⽤⾥
2.可能提供包括WebServices、RMI或Rest等在内的⼀种或多种通信接⼝
3.该层主要由Facade、DTO和Asmbler三类组件构成,三类组件均是典型的J2EE模式
DTO
-DataTransferObject(数据传输对象),也常被称作VO-ValueObject(值对象)
设计之初是为了将细粒度的领域对象包装为粗粒度的数据结构,减少⽹络通信并简化调⽤接⼝
DTO作⽤
1.减少⽹络流量
2.简化远程对象和远程接⼝
3.传输更多的数据减少远程调⽤次数
4.避免将领域状态跨层次传递
5.由于同步和版本控制增加了复杂性
DTO应⽤时序图
Asmbler
与领域对象之间的相互转换⼯作多由Asmbler承担
2.因此Asmbler⼏乎总是同DTO⼀起出现。
Asmbler实现⽅案
Fa?ade
1.实践Facade的过程中最难把握的问题就是Facade的粒度问题。
2.传统的Service均以实体为单位进⾏组织,⽽Facade应该具有更粗粒度的组织依据,较为合适的粒度依据有:
3.⼀个⾼度内聚的模块⼀个Facade
4.或者是⼀个“聚合”(特指领域驱动设计)⼀个Facade.
Facade实现⽅案
Facade应⽤时序图
Service
e会与多种组件进⾏交互
2.这些组件包括:
1)其他的Service
2)领域对象
3)Repository
4)DAO
Service应⽤时序图
Domain-领域层
层是整个系统的核⼼层,该层维护⼀个使⽤⾯向对象技术实现的领域模型,⼏乎全部的业务逻辑会在该层实现
层包含:
1)Entity(实体)
2)ValueObject(值对象)
3)DomainEvent(领域事件)
4)Repository(仓储)等
Infrastructure-基础设施层
1.基础设施层nfrastructure为Interfaces、Application和Domain三层提供⽀撑
2.所有与具体平台、框架相关的实现会在Infrastructure中提供,避免三层特别是Domain层掺杂进这些实现,从⽽“污染”领域模型
tructure中最常见的⼀类设施是对象持久化的具体实现
“传统”架构-贫⾎领域模型
DDD&&SOA
领域模型驱动设计
本文发布于:2023-01-03 21:43:09,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/90/86694.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |