Su的技术博客

  • 首页
  • Java
  • MySQL
  • DDD
  • 事故复盘
  • 架构方案
  • AI
  • Other
  • 工具
  • 打赏
  • 关于
路很长,又很短
  1. 首页
  2. 架构方案
  3. 正文
                           

【转载】DDD四色建模法

2023-08-25 81点热度 0人点赞 0条评论

四色建模法来源于Peter Coad的 《Java Modeling In Color With UML》,中文版:《彩色UML建模》(末尾处有书籍领取方式,仅用于学习)。

Peter Coad和Mark Mayfield奠定了4种架构型(一种形式,所有的东西都或多或少地遵守)的早期工作。

4种架构型 Archetype:

  1. 时刻时段 MomentInterval:一个时刻或一段时间,粉红色表示。
    • 一次销售是在一个时刻完成的——这次销售的日期和时间。
    • 一次租赁发生在一个时间段——从登记入住到归还。
  2. 角色 Role:角色是一种参与方式,它由参与方(人或组织机构)、地点或物品来承担,黄色表示。
  3. 描述 Description:它是“分类目录条目似的”描述,它是一组反复应用的值,它也为所有对应到某个描述的东西提供行为,蓝色表示。
  4. 参与方-地点-物品 PartyPlaceThing:参与方(意味着人或组织机构)、地点或物品是扮演不同角色的人或物,绿色表示。

DDD四色建模法

这4种颜色中每一种都对应一种架构型的特征(属性、链接、方法、插入点和交互),对应的类或多或少都包含了这些特性。

确定一个类的颜色和架构型。

  1. 它是时刻或时段,是出于业务原因或法律原因,是系统需要追踪的东西吗?如果是这样,那么它是粉红色的时刻时段。
  2. 否则,它是一个角色吗?如果是这样,那么它是黄色的角色。
  3. 否则,它是一个分类目录似的描述,包含了一组可以反复应用的值吗?如果是这样,那么它是蓝色的描述。
  4. 否则,它就是绿色的参与方-地点-物品。

DDD四色建模法

实战案例

客户账户管理系统

许多业务利用账户来追踪客户在给定的业务交易背景下的借款项和贷款项。

客户账户管理以申请为起点,终止于账户交易。

在客户账户管理中,我们建立并维护账户,这样就可以从客户的角度来追踪和呈现正在发生的业务。

时刻时段。客户账户管理的主要时刻时段包括:

  • 客户账户申请(CustomerAccountApplication)。
  • 客户账户交易(CustomerAccountTransaction)。

DDD四色建模法

客户账户申请

客户账户申请组件有一个粉红色的时刻时段:“客户账户申请”。

粉红色的**“客户账户申请”** 链接到3个黄色的角色:

  • 客户账户申请者。
  • 申请审批者。
  • 负责账户的组织机构实体。

“客户账户申请”链接到蓝色的“客户账户描述”,表明这次申请对应哪种类型的账户。
也链接到其蓝色的**“客户账户特征描述”**,分别是选择的特征和附加的特性。

对于一个**“客户账户申请”,它的后续粉红色时刻时段是“客户账户交易”(通过绿色的“客户账户”**)。

关键方法:

  1. 创建客户账户申请。
  2. 检查特征的适用性。
  3. 生成账户。
  4. 评估得到的账户的质量。

图一


客户账户

绿色的**“客户账户”链接到两个黄色的角色,“客户账户持有者”和“负责账户的组织机构实体”,它也链接到一个或多个蓝色的“客户账号特征描述”**。

对于**“客户账户”,它的前驱粉红色时刻时段是“客户账户申请”,它的后续粉红色时刻时段是“客户账户交易”**。

关键方法:

  1. 创建客户账户。
  2. 计算日平均账户余额。
  3. 计算日平均容量。

客户账户交易

“客户账户交易”有一个粉红色的时刻时段:“客户账户交易”。

粉红色的**“客户账户交易”链接到3个黄色的角色:“客户账户持有者”、“负责账户的组织机构实体”、“作为业务地点的设施”(给定的客户账户事务发生的地点)。它也链接到粉红色的“客户账户交易明细”**。

“客户账户交易明细”链接到绿色的“客户账户”。

对于**“客户账户交易”,它的前驱粉红色时刻时段是“客户账户申请”,它的后续粉红色时刻时段是针对该交易的“会计过账”**。

关键方法:

  1. 创建客户账户交易。
  2. 计算客户账户平均交易金额。

最终生成的完整组件模型如图二:

图二

总结

四色建模是建立在UML基础之上的一种新型建模方式,在建模过程中需要按照4个步骤来完成业务领域的建模工作:

  1. 分析业务流程,确认流程中的关键名词,抽象出业务实体。
  2. 从用例入手,找出其中的红色(时刻时段)。
  3. 找出其中的相关元素。
  4. 细化每一个类的方法和属性。

参考资料

  1. Peter Coad:《Java Modeling In Color With UML》

 

本文仅供学习!所有权归属原作者。侵删!文章来源:阿飞 https://blog.csdn.net/u011385940/article/details/125652592

更多文章:

  1. 全链路压测之影子库及ShardingSphere实现影子库源码剖析
  2. 定时任务原理方案综述
  3. RocketMQ 很慢?引出了一个未解之谜
  4. Chrome插件(扩展)开发全攻略2.6w字,看这篇就够了!
  5. 记一次网络请求连接超时的事故
  6. ElasticSearch之各大版本演进,发布8.0.0 Alpha 2版本
  7. 笔记 | 面试又挂了,只因问了:TCP三次握手和四次挥手
  8. 笔记08 | 搜狗面试题:IO多路复用之select、poll、epoll的区别
标签: 转载 ddd UML 四色建模法
最后更新:2023-08-26

coder

分享干货文章,学习先进经验。

打赏 点赞
< 上一篇
下一篇 >
文章目录
  • 实战案例
    • 客户账户管理系统
    • 参考资料
最新 热点 推荐
最新 热点 推荐
单体分层应用架构剖析 MySQL事务死锁问题排查 浅谈DDD中的聚合 高并发场景下JVM调优实践之路 ChatGPT的探索与实践 生产环境的CMS垃圾回收,一定要这样配置参数
Log4j框架疯狂写日志,导致磁盘打满问题排查高并发场景下JVM调优实践之路3.编程语言的演化(译)4.架构风格 vs. 架构模式 vs. 设计模式(译)5.单体架构(译)6.分层架构(译)
AI辅助编码,应该怎么选? 笔记 | 5种网络IO模型 RocketMQ 很慢?引出了一个未解之谜 实现一个状态机引擎,教你看清DSL的本质 京东购物车如何提升30%性能 百度工程师浅谈分布式日志

AIGC (1) BASE (1) bigkey (1) CAP (1) codeium (2) Copilot (2) hotkey (1) inject (1) jar包 (1) mvc (1) OOP (1) UML (1) vivo (2) 事务隔离级别 (1) 人工智能 (2) 代码质量 (1) 低耦合 (1) 依赖倒置原则 (1) 六边形架构 (1) 分层架构 (3) 分布式事务 (1) 分页 (1) 单体架构 (2) 可复用性 (1) 可读性 (1) 合同 (1) 后端开发 (1) 命名 (1) 四色建模法 (1) 垃圾回收器 (1) 开源 (1) 性能调优 (4) 智能助手 (1) 架构模式 (1) 架构设计 (4) 架构风格 (1) 模块 (1) 死锁 (1) 物流 (1) 系统架构 (4) 缓存穿透 (1) 缓存雪崩 (1) 编程助手 (3) 编程技能 (1) 编程语言 (2) 聚合 (1) 软件工程师 (1) 软件架构 (2) 驱动升级 (1) 高内聚 (1)

COPYRIGHT © 2014-2023 verysu.com . ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

粤ICP备15033072号-2