DDD的特点主要是定位于解决复杂性,

1、发现和理解问题

介绍两周发现问题并能就理解问题达成共识的方式:面对面协作建模和阅读代码逆向工程建模。

2、领域即边界

领域即边界,边界考分类,分类需要从内外部入手。

3、解决复杂性

两种方法:拆解松耦合的组件+使用容易让人明白的套路表达出来。

首先,DDD通过引入 领域或是子域 、有界上下文来划分边界,边界一旦分好第一步就完成。

第二步:引入各种模式名词 比如 聚合,实体,值对象,工厂、仓储、领域事件、让知晓这些模式的人能够一下定位功能对应实现的组件。(套路)

4、新的数据结构设计方式

DDD设计结果主要是通过类(Class)来表达其模型,类不仅是一种数据结构,而且带有主动操作数据结构行为,类=数据结构+行为。

例图:

5、需要注重产品的程序员(人的因素很重要)

实际上是对程序员要求更高,需要知道的更多,参与的更多,需要与产品设计人员、业务分析师、或是客户坐下来一起讨论。

例如Uber工程师Gergely 认为注重产品的程序员应该具有9个特征:

1、积极参与产品构想/意见

2、对业务、用户行为和有关数据感兴趣

3、具有好奇心和对为什么的浓厚兴趣

4、较强的沟通能力,与非工程师保持好良好关系

5、预先提供产品/工程权衡,因为他们对产品“为什么”以及工程方面有深刻了解,所以他们可以提供很少有人可以提出的建议。
          6、边缘案例的务实处理。

7、注重快速的产品验证。

8、当某个功能的性能比预期差时,会很好的了解问题的位置,并希望找到在产品计划和世界结果之间出现差距的根本原因。会和产品经理和相关人员你讨论假设和学习。

9、通过反复学习来增强对产品的直觉

难点和特点很像:1、确定业务策略和业务规则 ;2、统一语言与有界上下文 ;3、领域模型的提炼

DDD领域驱动设计特点及难点相关推荐

  1. DDD领域驱动设计---战略设计(包括四色原型建模)

          相当于策略设计,从宏观角度着眼于领域的分析设计,属于系统分析阶段,注重如何从有界上下文中寻找领域模型,战略模式由有界上下文.无所不在的语言和上下文映射组成. 在战略设计前首先要了解下领域知 ...

  2. DDD 领域驱动设计

    从遇到问题开始 当人们要做一个软件系统时,一般总是因为遇到了什么问题,然后希望通过一个软件系统来解决. 比如,我是一家企业,然后我觉得我现在线下销售自己的产品还不够,我希望能够在线上也能销售自己的产品 ...

  3. DDD领域驱动设计之聚合、实体、值对象

    关于具体需求,请看前面的博文:DDD领域驱动设计实践篇之如何提取模型,下面是具体的实体.聚合.值对象的代码,不想多说什么是实体.聚合等概念,相信理论的东西大家已经知晓了.本人对DDD表示好奇,没有在真 ...

  4. DDD领域驱动设计 — 贫血模型与充血模型

    文章转载来源:https://juejin.cn/post/6917125801460629518 | 前言  要想深入掌握和了解 DDD 领域驱动设计的核心,那无论如何也绕不开两大较为抽象的概念-- ...

  5. DDD 领域驱动设计:贫血模型、充血模型的深入解读!

    作者:JavaEdge在掘金 链接:https://juejin.cn/post/6917125801460629518 -     前言     - 要想深入掌握和了解 DDD 领域驱动设计的核心, ...

  6. 浅谈我对DDD领域驱动设计的理解

    从遇到问题开始 当人们要做一个软件系统时,一般总是因为遇到了什么问题,然后希望通过一个软件系统来解决. 比如,我是一家企业,然后我觉得我现在线下销售自己的产品还不够,我希望能够在线上也能销售自己的产品 ...

  7. C#进阶系列——DDD领域驱动设计初探(五):AutoMapper使用

    前言:前篇搭建了下WCF的代码,就提到了DTO的概念,对于为什么要有这么一个DTO的对象,上章可能对于这点不太详尽,在此不厌其烦再来提提它的作用: 从安全上面考虑,领域Model都带有领域业务,让Cl ...

  8. DDD 领域驱动设计:贫血模型、充血模型的深入解读

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"书",获取 后台回复"k8s",可领取k8s资料 -     前言 ...

  9. [转]浅析DDD(领域驱动设计)

    最近在做一些微服务相关的设计,内容包括服务的划分,Restful API的设计等.其中比较棘手的就是Service的职责划分:如何抽象具有统一业务范畴的Model,使其模块化,又如何高度提炼并组合多模 ...

最新文章

  1. HDU - 3333 Turing Tree 线段树区间不同值和+详解+思想
  2. Linux 中echo格式控制、重定向 、管道 | 简介
  3. C语言经典例100-将学生成绩写入文件
  4. 【Kotlin】抽象类 ( 声明 | 抽象类成员 | 抽象类继承 | 抽象方法覆盖 | 抽象方法实现 )
  5. boost::spirit模块实现使用单个融合序列来生成不同序列中元素的输出的测试程序
  6. 关于浮点型加减乘除运算不精确的问题
  7. Python项目中 封装日志模块logging 及快速调用方法
  8. 诗与远方:无题(六十)
  9. C++学生信息管理系统
  10. Unity3D 退出游戏应用的代码
  11. 终于搞定Linux下笔记本无线上网
  12. Altium Designer 18 生成网络表
  13. WGCNA:(加权共表达网络分析)
  14. android通讯录照片同步,通讯录同步助手
  15. Vue开发仿京东商场app
  16. XILINX封装FBG与FFG区别
  17. python爬取12306_python爬取12306列车信息
  18. linux字符终端浏览器-----Lynx
  19. Python四行代码实现的猜数字小游戏,基于thinker,带GUI界面
  20. 程序员客栈:程序员的经纪人_对于程序员:如何处理干扰和打扰

热门文章

  1. python 如何判断一个数为整数?(判断整数,没有小数)(取余)判断整型 isinstance()
  2. DSP与FPGA和嵌入式是什么关系?
  3. mysql使用date_format格式化日期
  4. 大庆东风中学高考成绩查询2021年,2021年大庆中考成绩和分数线什么时候公布(附查询入口)...
  5. python时间序列预测报错_python如何做时间序列
  6. EXC中时间控件的使用
  7. python随机抽取人名_用Python打造一个CRM系统(五)
  8. 解决vc2008 utf8中文字符串报错 C2001常量中有换行符
  9. 什么叫pmt测试分析_直读分析光谱仪核心配件
  10. 1个系统节拍 c语言_自己写的非抢占式嵌入式操作系统ATOS,全c语言,移植太......