【DDD】三个火枪手原则和两个披萨原则
三个火枪手原则
《三个火枪手》是法国作家大仲马的代表作之一,故事背景设定在17世纪的法国。小说讲述了年轻的德夫朗与三个好友的冒险经历,他们分别是阿多斯、波尔多和阿拉米斯,这三位好友就是“三个火枪手”。
三个火枪手对待友情非常看重,他们拉拢德夫朗,为保住英国夫人安娜玛丽亚与路易十三的爱恋而努力保卫她的荣誉,维护教皇的尊严,反对基督教新教,斗争了数年。最终,他们通过团结合作,成功地保全了安娜玛丽亚的荣誉,还击败了教皇和新教徒的阴谋,成为了一段传奇故事。
小说中三个火枪手的信念“一人为所有,所有人为一人”强调团结协作、勇气和荣誉的重要性,它成为了一种传统的价值观念,为后人所传颂。
“三个火枪手原则”是DDD(领域驱动设计)中的核心原则之一,它主张在构建高质量的领域模型时需要关注以下三个方面:
领域专家的知识:领域模型应该基于业务领域专家的知识和场景,开发人员应该与业务领域专家紧密合作,根据场景和业务需要不断调整和优化领域模型。领域专家会为我们提供业务上下文和相关知识,有助于我们构建更准确和高质量的领域模型。
领域模型的设计:领域模型应该是一个自成体系的领域模型,包括实体、值对象、聚合、领域服务、工厂、存储库等模型元素。设计合理、良好的领域模型可以为我们创造更有价值的业务功能和更清晰的业务价值。
领域模型的实现:领域模型不仅仅是纸上谈兵,也需要在代码中进行实现。开发人员需要在代码实现中仔细考虑领域模型的真正含义和作用,确保代码与领域模型保持一致性。
这三个方面相互关联、相互支持,三个要素缺一不可,共同构成了高质量的领域模型。在使用DDD思想进行开发时,我们需要遵守“三个火枪手原则”,才能构建出符合业务需求和高品质的领域模型,为项目的长期发展奠定基础。
两个披萨原则
“两个披萨原则”是DDD(领域驱动设计)中的另一个重要原则,它指出:
一个团队应该不超过两个披萨的大小:一个团队开发的项目规模应该不超过可以被两个披萨容纳的大小。也就是说,如果一个团队的人数太多,项目就会变得复杂难以管理,影响项目开发和迭代速度。因此,团队的规模应该尽量控制,以保证高效的协作和管理。
每个领域模型应该不超过两个披萨的大小:每个领域模型的规模也应该不超过可以被两个披萨容纳的大小。这意味着,每个领域模型应该是单一职责、独立性清晰、可拓展性强的,保证模型的简洁性和可运营性。
这两个原则强调了项目团队和领域模型的大小对项目的开发和管理的重要性,可以使开发团队更快、更灵活地开发高品质项目。同时,这也意味着团队需要更聚焦、更关注领域和业务,以便更好地理解和解决用户的需求和问题。在实践中,我们需要利用这两个原则的指引,打造一个紧密、敏捷的开发团队,并建立一个高效、可拓展的领域模型。
【DDD】三个火枪手原则和两个披萨原则相关推荐
- [项目管理]管理杂谈—三个火枪手
[项目管理]管理杂谈-三个火枪手 1.三个火枪手是博弈论的经典故事,讲的是:彼此都有仇的甲.乙.丙三个火枪手,狭路相逢,准备决斗. 但三个人的枪法,如下图所示: 问:谁最终活下来的机会最大?答案 ...
- 面向对象的三个基本特征 和 五种设计原则
面向对象的三个基本特征 和 五种设计原则 来源: http://blog.csdn.net/cancan8538/article/details/8057095 一.三个基本特征 面向对象的三个基本特 ...
- 【组合数学】排列组合 ( 两个计数原则、集合排列示例 | 集合排列、圆排列示例 )
文章目录 一.两个计数原则.集合排列示例 二.集合排列.圆排列示例 排列组合参考博客 : [组合数学]基本计数原则 ( 加法原则 | 乘法原则 ) [组合数学]集合的排列组合问题示例 ( 排列 | 组 ...
- 在如今的就业形势下,想要跳槽?你该把握的一个原则和两个技巧!
不引用调查报告,不渲染悲情气氛,简单粗暴说事实,现在的就业形势是:招聘的需求减少了,应聘的人员增加了. 想一想,是不是降薪和裁员以及公司倒闭,已经实实在在地发生在了你身上或者就在你身边? 对于招聘企业 ...
- pythonsocket中tcp通信接收不到数据_TCP 为什么三次握手而不是两次握手(正解版)...
先说结论 为了实现可靠数据传输, TCP 协议的通信双方, 都必须维护一个序列号, 以标识发送出去的数据包中, 哪些是已经被对方收到的. 三次握手的过程即是通信双方相互告知序列号起始值, 并确认对方已 ...
- jquery 文件上传 触发两次_点击三次input按钮,前两次不选择任何文件,第三次选择一个文件,结果上传了3个文件,即发生了三次请求...
点击三次input按钮,前两次不选择任何文件,第三次选择一个文件,结果页面上出现了3个文件,也就是上传了3个文件 我点击input,不选择任何文件,然后取消文件选择器的窗口,然后第二次次点击input ...
- 【java】java 如何不使用第三个变量来交换两个数的值
文章目录 1.概述 2.方案 2.1 算术运算 2.2 位运算 1.概述 今天是一个悲伤的一天,我的悲伤逆流成河.非常非常的悲伤.主要是有这个一个面试题.如何不使用第三个变量来交换两个数的值. 考官说 ...
- python里氏替换原则_php设计模式的六大原则(三):里氏替换原则
//例子1 class Bird{ protect function fly(){ } } //翠鸟 class KingFisher extends Bird{ } //鸵鸟 class Ostri ...
- 第七章第三十一题(合并两个有序列表)(Merge two ordered tables)
#第七章第三十一题(合并两个有序列表)(Merge two ordered tables) **7.31(合并两个有序列表)编写下面的方法,将两个有序列表变成一个新的有序列表. public stat ...
最新文章
- 力挺Python!同是程序员,为啥同事年前就实现了财务自由?
- 远程连接10.81.148.63 HP580
- AndroidFFmpeg
- 基于按annotation的hibernate主键生成策略
- NoneBot2插件——进群欢迎
- BZOJ 2456 mode (杂题)
- 风格迁移应用_进展丨图像也能做情感迁移?罗切斯特大学团队提出计算机视觉新任务...
- javascript 打开新窗口
- 室内布线电缆未来的发展趋势
- 人、猕猴、小鼠静息态三重网络
- 基于IDS模型设计的ICS
- 如果没有传智播客和张老师,我现在不可能有机会在一家上市公司工作
- 基金经理学量化(Python+AI)
- 51单片机数码管静态显示
- 计算机专业英语形成型考核册,电大资源网《人文英语3》形成性考核册作业题目和答案2018年...
- eclipse资源文件搜索如何去掉class文件
- 浏览器显示无法解析服务器的DNS地址,搜狗浏览器无法解析服务器的DNS地址怎么解决...
- airpak模拟案例,Airpak模拟教程-体育馆通风模拟案例-CFD数值模拟教程airpak.pdf
- 2019上海埃森哲软件开发面试
- EasyPlayer播放器出错502 Bad Gateway问题分析
热门文章
- Invalid packaging for parent POM , must be “pom“ but is “jar“
- pytorch使用过程中的错误处理之内存溢出
- Shell -----grep
- 重回资本市场,一嗨租车靠什么“嗨”出50亿美元估值?
- “啃米族”云米的扑朔自立路
- 在OpenGL中利用shader進行實時瘦臉大眼等臉型微調
- python经典程序练习题-Python练习题(基础知识练习题(一))
- 论在leetcode遇到的奇葩题解
- 生活娱乐 怎么治疗冻疮 有特效
- 管理好公司固定资产需要做什么?资产管理一步到位