DDD领域驱动设计特点及难点

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

1、发现和理解问题

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

2、领域即边界

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

3、解决复杂性

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

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

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

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

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

    例图:DDD领域驱动设计特点及难点_第1张图片

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

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

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

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

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

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

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

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

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

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

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

 

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

你可能感兴趣的:(架构,java,架构)