码迷,mamicode.com
首页 > 其他好文 > 详细

领域驱动设计-入门

时间:2016-03-22 23:18:10      阅读:527      评论:0      收藏:0      [点我收藏+]

标签:

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

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

技术分享

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

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

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

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

-----------

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

技术分享

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

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

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

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

DDD的实现方式和TDD类似:

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

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

领域驱动设计-入门

标签:

原文地址:http://www.cnblogs.com/alphablox/p/5309030.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!