DDD领域驱动设计及其概念

来源:互联网 发布:液冷散热器 知乎 编辑:程序博客网 时间:2024/05/01 23:34
1.介绍DDD概念
    Eric Evans的“Domain-Driven Design领域驱动设计”简称 DDD,它是一套综合软件系统分析和设计的面向对象建模方法,或者可称为MDD模型驱动方法的一种,区别于MDA模型驱动架构。它是一种分析设计建模方法,它倡导统一语言,提出了实体和值对象以及聚合根等概念,借助DDD我们能够在结构理清需求中领域模型。 

  过去系统分析和系统设计都是分离的,正如我们国家“系统分析师” 和“系统设计师” 两种职称考试一样,这样割裂的结果导致,需求分析的结果无法直接进行设计编程,而能够进行编程运行的代码却扭曲需求,导致客户运行软件后才发现很多功能不是自己想要的,而且软件不能快速跟随需求变化。

  DDD则打破了这种隔阂,提出了领域模型概念,统一了分析和设计编程,使得软件能够更灵活快速跟随需求变化。

  DDD是解决复杂大型软件的一套行之有效方式,在国外已经成为主流。DDD认为很多原因造成软件的复杂性,我们不可能避免这些复杂性, 能做的是对复杂的问题进行控制。而一个好的领域模型是控制复杂问题的关键。领域模型的价值在于提供一种通用的语言,使得领域专家和软件技术人员联系在一起,沟通无歧义。
2.DDD的技术关键点,如下所示:

  2.1面向对象建模与数据库建模两种分析设计方法的比较
  数据库驱动设计与对象建模是决定软件不同命运的两大派别,谁可以让软件更具有生命,维护拓展更方便?伸缩性更强?

  2.2对象和关系数据库的天然阻抗
  软件是讲究方法的,要谈方法,这个世界只有两种:一是将复杂问题简单化的方法;另一是将简单问题复杂化的方法。对于软件这个领域,你只能选择前者。

  2.3 面向对象与领域建模
  据调查,目前有70%左右程序员是在使用OO语言编写传统过程化软件,缺乏完整的面向对象思维方法的教育和培训是基本根源,本文对软件开发中几个常见问题提出了独立的见解及尖锐的观点

  2.4 Evans DDD 领域建模
  如何提炼模型,而不是数据表,进而精化模型对象,使其能够反映领域概念基本本质是一个复杂过程,Evans DDD是2004年提出的具备革命性影响的软件思想。

   2.5 DDD(Evans DDD  Domain-Driven Design领域驱动设计),领域模型驱动设计(Evans DDD)之模型提炼 
领域建模是一种艺术的技术,不是数学的技术,它是用来解决复杂软件快速应付变化的解决之道。如何从职 责和协作中发现丰富对象?给出了DDD具体实践中一些具体细节,是和DDD配合一起进行面向对象分析设计的好方法。

  2.6 DCI架构是什么?
  DCI架构:DCI: 对象的Data数据, 对象使用的Context场景, 对象的Interaction交互行为

  2.7 Domain Events异步应用
  领域驱动设计和异步架构完美实战解决之道。

  2.8 DDD DCI和领域事件
  将DDD DCI Event sourcing结合在一个案例中,展示OOA和OOD实现过程,直至可运行的源代码。

  2.9 DSM:Domain-Specific Modeling
  DSM是超越UML/MDA一种新的建模方法,它成倍提高软件开发效率。

  2.10 四色原型
  我们在一个软件革命的开始,它象90年代我们看到的面向对象编程从传统过程语言中抽象出来一样。 如果说GOF设计模式开辟了OO对象设计新时代,那么原型模式和MDA将开辟后十年的软件新时代。

  2.11 Feature-Driven Development特征驱动开发
  使用JdonFramework等现代Model/Service框架是在什么项目工程背景下进行的?不是以前的XP(Extreme Programming )或RUP,而是FDD。

  2.12 UML和Java的阻抗
  如果Java和UML这种发展概念不匹配下去,我们真的要问UML过时了吗?

  2.13 状态对象:数据库的替代者
  这是一个实战中非常重要但是容易被忽视的概念,说它重要,是因为它比数据库重要;说它容易被忽视也是同样的原因,它经常被数据库概念替代。


    3.其他的一些概念

     DCI: Data数据模型, Context上下文或场景, Interactions交互行为是一种新的编程范式,由MVC发明人Trygve Reenskaug提出。
    E文: DCI : Data Context interactions in context, the interactions of Role will be assigned to data model;
     DCI的关键是:
     1. 要让核心模型非常瘦.
     2. 逻辑或行为应该放在角色这个类中。
原创粉丝点击