我对DDD领域驱动设计的理解

本片随笔仅记录自己目前对DDD的理解与实践,后续会持续关注DDD,持续更新

1. DDD是什么

DDD是领域驱动设计的简称,那什么是领域呢,领域就是业务,比如,制药领域,金融领域,电商领域等等,各个领域有各个规则,复杂的规则如何应对呢,想到一个关键字那就是分治思想。领域再大都可以拆分成小子域,如同递归思想,单独求解汇总解决复杂问题

2. 怎么拆?战略设计和战术设计

2.1 战略设计

可以理解为上帝视角看待软件系统,划分出核心域,支撑域,定义一些通用的语言

召集产品,开发人员,测试人员,领域专家,进行开会,用例分析,用户实际故事,讨论总结提炼出领域的知识,简历实体模型,达成描述一致性,包括功能,目标,范围等等

举例:如跨境汇款领域
子域和统一语言:订单,付款,兑换,交割,汇率,货币对,国家,交割,充值,等等。
如核心域的汇款,支撑汇款的有付款,兑换,交割

界限上下文
如汇率和兑换的界限,汇率与渠道方的界限,区分出这些界限

上下文映射
合作关系,共享实体,下游客户依赖上游供应方,各行其道,上下文的防腐层也很关键

分层架构
API:为用户服务
APP:编排组织领域模型,互相协作
Domain:表达业务概念,状态,规则
Infrastructure:持久化,文件读写,调用邮件等

2.2 战术设计

侧重于如何设计编码并实现项目目标

实践中的问题

  1. 由于后续需求过多,新加入的开发人员对DDD理解不够深刻,看到很多术语和概念,即可打退堂鼓,导致很多后加的需求功能并非完全DDD,
  2. DDD在建模要花费大量人员的时间经历,付出与收益不成正比,后续迭代的功能慢慢腐败了。
posted @   aleiyoy  阅读(57)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
点击右上角即可分享
微信分享提示