领域驱动设计-DDD
2022-09-23 19:25:42 0 举报
领域驱动设计-DDD
作者其他创作
大纲/内容
instracture(基础设施)层
1.数据存储层(repository)实现2.ACL防腐层实现3.依赖外部技术或者框架的逻辑
将原先的三层架构按照领域模型的思想进行拆分后,项目就不在围绕数据库层面进行,而是以领域对象为核心,领域层为纯内存的数据和操作,不存在外部依赖。其次是整体功能的分发编排模块,app层依赖抽象的领域层方法、ACL接口、repository等,不依赖于具体实现。最后是ACL接口以及repository的实现,instracture层,这一层调用外部接口,使用外部技术组件,并对数据做持久化处理。基于这种依赖关系,我们会先写domain层,再写app层的任务分发编排,最后再实现基础设施层的实现。这种架构思路和代码组织结构就叫做 Domain driven design (领域驱动设计)
starter启动层
1.启动类2.完整单测流程
domain(领域)层
1.领域对象(对象属性以及行为,对象自身的行为)2.ACL(防腐层),抽象第三方接口以及中间件3.领域对象方法(围绕领域对象封装业务逻辑,对象与对象之间的计算)4.数据存储层repository接口
UI(user instance)层
1.web:controller2.api:feign3.sentinel:限流降级
ACL(Anti Corruption layer)工作开发中我们去依赖第三方的接口或者组件,可能会遇到不合理的数据结构、API、协议等技术实现。如果对外部系统进行强依赖可能会导致我们自身系统被腐蚀。假如我们在外部依赖和内部逻辑之间加一个防腐层就可以有效避免腐蚀。ACL层还可以灵活的实现其他功能:1.适配器:做数据结构的转换2.缓存:对于频繁调用但是返回数据变化不大的外部依赖可以对返回数据进行缓存3.功能开关:假如某些场景下不希望调用外部接口,或者让外部接口返回我们指定的数据可以通过设置开关来实现
实体类命名规则DO: domain objectPO: persistent objectVO: view objectDTO:data transfer object层与层之间使用mapstruct进行属性转换
app(application)层
1.进行任务的分发与编排2.不做计算逻辑处理
0 条评论
回复 删除
下一页