领域驱动设计-入门

领域驱动设计围绕着对象进行设计,类似于传统的OO,但是还是不同的。

传统的OO更像是贫血的领域对象,它具有数据,很多get set方法,但是缺少业务逻辑。客户端使用时,需要进行一大串的set操作。举个栗子:

这种方式中customer是一个贫血的领域对象,客户端必须进行很多的set,最后调用dao进行保存。

---------------

那么,怎样才是不贫血的领域对象呢?主要看两点:boundedcontext,通用领域语言。

领域对象是通过通用领域语言进行描述的,通用语言是领域专家和开发人员通用的语言。

-----------

使用通用语言是什么样的呢?假设一个护士给一个病人打疫苗的case,护士先算好量,再进行注射。有3种实现方式:不使用领域对象,粗糙的使用领域对象,正确的使用领域对象。如下图所示:

我们看到使用领域对象可读性是最好的。简而言之,领域对象的编程语言就是让领域专家,非程序员能读懂我们的代码。并且能看出系统的问题。

-------------

DDD的3个挑战:需要时间创建通用语言;需要领域专家支持;开发者需要改变思维方式。

------------------

DDD的实现方式和TDD类似:

  1. 模拟客户的代码;
  2. 创建领域对象使得测试通过;
  3. 重构直到领域对象的方法名表明了业务含义;
  4. 实现行为;
  5. 给领域专家展示;

最后领域专家可以通过阅读代码来理解程序。

时间: 2024-10-14 11:13:54

领域驱动设计-入门的相关文章

【无私分享:ASP.NET CORE 项目实战(第三章)】EntityFramework下领域驱动设计的应用

目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 在我们 [无私分享:从入门到精通ASP.NET MVC] 系列中,我们其实也是有DDD思想的,但是没有完全的去实现,因为并不是所有的好的东西都必须要用到的,还是根据实际情况,DDD在大型的系统中是非常好的一种设计思想,这点不否认.但是根据具体情况而言,在我们小型的项目中,我们设计框架的更多考虑的是让使用者快速.便捷的开发,能快速的了解框架进行项目开发. 重构我们的思路 最近研究了一下几位大神的博客,特别是:@腾飞(Jess

Re:从零开始的领域驱动设计

领域驱动的火爆程度不用我赘述,但是即便其如此得耳熟能详,但大多数人对其的认识,还只是停留在知道它的缩写是DDD,知道它是一种软件思想,或者知道它和微服务有千丝万缕的关系.Eric Evans对DDD的诠释是那么地惜字如金,而我所认识的领域驱动设计的专家又都是行业中的资深前辈,他们擅长于对软件设计进行高屋建瓴的论述,如果没有丰富的互联网从业经验,是不能从他们的分享中获取太多的营养的,可以用曲高和寡来形容.1000个互联网从业者,100个懂微服务,10个人懂领域驱动设计. 可能有很多和我一样的读者,

我眼中的领域驱动设计

有幸参与了一些领域驱动的项目,读了一些文章,也见识了一些不伦不类的架构,感觉对领域驱动有了更进一步的认识.所以今天跟大伙探讨一下领域驱动设计,同时也对一些想要实践领域驱动设计却又无处下手,或者一些正在实践却又说不上领域驱动设计到底好在哪的朋友一些建议.当然对于领域驱动设计这个主题而言从来不乏争论,所以大家可以在畅所欲言. 为什么要使用领域驱动设计? 从Eric Evans写的<领域驱动设计:软件核心复杂性应对之道>一书的书名就可以看出这一方法论是为了解决软件核心复杂性的.也就是说软件业务越来越

我眼中的领域驱动设计(转)

原文地址:http://www.cnblogs.com/richieyang/p/5373250.html 有幸参与了一些领域驱动的项目,读了一些文章,也见识了一些不伦不类的架构,感觉对领域 驱动有了更进一步的认识.所以今天跟大伙探讨一下领域驱动设计,同时也对一些想要实践领域驱动设计却又无处下手,或者一些正在实践却又说不上领域驱动设计 到底好在哪的朋友一些指引方向.当然对于”领域驱动设计”这个主题而言从来不乏争论,所以大家可以在畅所欲言. 为什么要使用领域驱动设计? 从Eric Evans的<领

演进架构中的领域驱动设计

from:http://www.infoq.com/cn/articles/ddd-evolving-architecture   领域驱动设计能非常容易地应用于稳定领域,其中的关键活动适合开发人员对用户脑海中的内容进行记录和建模.但在领域本身不断变化和发展的情况下,领域驱动 设计变得更具有挑战性.这在敏捷项目中很普遍,在业务本身试图演进的时候也会发生.本文分析了在反思.重建guardian.co.uk这一为期两年的计 划背景下我们是如何利用DDD的.我们展示了如何确保在软件架构中反映最终用户演

我的“第一次”,就这样没了:DDD(领域驱动设计)理论结合实践

写在前面 插一句:本人超爱落网-<平凡的世界>这一期,分享给大家. 阅读目录: 关于DDD 前期分析 框架搭建 代码实现 开源-发布 后记 第一次听你,清风吹送,田野短笛:第一次看你,半弯新湖,鱼跃翠堤:第一次念你,燕飞巢冷,释怀记忆:第一次梦你,云翔海岛,轮渡迤逦:第一次认你,怨江别续,草桥知己:第一次怕你,命悬一线,遗憾禁忌:第一次悟你,千年菩提,生死一起. 人生有很多的第一次:小时候第一次牙牙学语.第一次学蹒跚学步...长大后第一次上课.第一次逃课.第一次骑自行车.第一次懂事.第一次和喜

DDD领域驱动设计基本理论知识总结

领域驱动设计之领域模型 加一个导航,关于如何设计聚合的详细思考,见这篇文章. 2004年Eric Evans 发表Domain-Driven Design –Tackling Complexity in the Heart of Software (领域驱动设计),简称Evans DDD.领域驱动设计分为两个阶段: 以一种领域专家.设计人员.开发人员都能理解的通用语言作为相互交流的工具,在交流的过程中发现领域概念,然后将这些概念设计成一个领域模型:由领域模型驱动软件设计,用代码来实现该领域模型:

(转载)浅谈我对DDD领域驱动设计的理解

原文地址:http://www.cnblogs.com/netfocus/p/5548025.html 从遇到问题开始 当人们要做一个软件系统时,一般总是因为遇到了什么问题,然后希望通过一个软件系统来解决. 比如,我是一家企业,然后我觉得我现在线下销售自己的产品还不够,我希望能够在线上也能销售自己的产品.所以,自然而然就想到要做一个普通电商系统,用于实现在线销售自己企业产品的目的. 再比如,我是一家互联网公司,公司有很多系统对外提供服务,面向很多客户端设备.但是最近由于各种原因,导致服务经常出故

WCF客户端配置以及代理-----基于DDD领域驱动设计的WCF+EF+WPF分层框架(4)

写在最前面:转载请注明出处 目录置顶: 关于项目--------------------基于DDD领域驱动设计的WCF+EF+WPF分层框架(1) 架构搭建--------------------基于DDD领域驱动设计的WCF+EF+WPF分层框架(2) WCF服务端具体实现---------基于DDD领域驱动设计的WCF+EF+WPF分层框架(3) WCF客户端配置以及代理-----基于DDD领域驱动设计的WCF+EF+WPF分层框架(4) Domain具体实现------------基于DD