免费
免费
免费
免费
在线版本
在线版本
在线版本
在线版本
(非印刷免费在线版)
InfoQ
InfoQ
InfoQ
InfoQ
中文站出品
本书由 InfoQ 中文站免费发放,如果您从其他渠道获取本
书,请注册 InfoQ 中文站以支持作者和出版商,
并免费下载更多 InfoQ 企业软件开发系列图书。
本 书 主页为
http://infoq.com/
http://infoq.com/
http://infoq.com/
http://infoq.com/
cn/
cn/
cn/
cn/
minibooks/domain-driven-design-
minibooks/domain-driven-design-
minibooks/domain-driven-design-
minibooks/domain-driven-design-
quickly
quickly
quickly
quickly
iii
领域驱动设计
领域驱动设计
领域驱动设计
领域驱动设计
精简版
精简版
精简版
精简版
© 2006 C4Media Inc.
版权所有
C4Media 是 InfoQ.com 这一企业软件开发社区的出版商
本书属于 InfoQ 企业软件开发系列图书
如果您打算订购 InfoQ 的图书,请联系 books@c4media.com
未经出版者预先的书面许可,不得以任何方式复制或者抄袭本书的任何
部分,本书任何部分不得用于再印刷,存储于柯重复使用的系统,或者
以任何方式进行电子、机械、复印和录制等形式传播。
本书提到的公司产品或者使用到的商标为产品公司所有。
如果读者要了解具体的商标和注册信息,应该联系相应的公司。
本书用到的图片在 Creative Commons License 许可下使用,并征得
Addison-Wesley 于 2004 年出版的 DOMAIN DRIVEN DESIGN 一书作
者 Eric Evans 的许可。
本书封面基于 Creative Commons License ,并征得 Addison-Wesley 于
2004 年出版的 DOMAINDRIVEN DESIGN 一书作者 Eric Evans 的许
可。
英文版责任编辑: Floyd Marinescu
英文版封面设计: Gene Steffanson
英文版美术编辑: Laura Brown 和 Melissa Tessier
向 Eric Evans 致以特别的谢意
中文版翻译:孙向晖 霍泰稳
中文版责任编辑:霍泰稳
中文版美术编辑:吴志民
欢迎共同参与 InfoQ 中文站的内容建设工作,包括原创投稿和翻译等,
请联系 china-editorial@infoq.com 。
10 9 8 7 6 5 3 2 1
v
译
译
译
译
序
序
序
序
一
一
一
一
在 2004 年之前的某一天,我和所在部门的一个设计师进行沟通,当
时他为自己的一个思路兴奋不已,而我要做的事情就是跟他讨论清
楚他头脑中的那个想法,然后写出需求和设计文件来。大家可能会
注意到,很多时候,需求是从设计中反推出来的,这被一些专家称
为 “ 需求的反向工程 ” 。其实我更多地认为这是由于我们现在糟糕
的工作现状决定的,有诸多的因素导致需求或者设计被局限在仅有
的几个人的知识体系中,但如果有心去细察,会发现他们各自的理
解又各不相同。
回到刚才说到的那次沟通上,当那个设计师把自己的得意之作描述
完毕后,我在纸上用 UML 图画出了他的主题思路,然后我们针对细
节开始探讨并在图上改改画画。最后的修订结果显示,他的很多 " 创
举 " 是多余的,经过精简后的 UML 基本上颠覆了他原有的思路。现
在我还记得那位同事的一声叹息: “ 一周的功夫白费了 ……”
其实在整件事情中,他有他的得失,我也有我的收获和困惑:我意
识到对统一的核心模型进行探讨和简化的重要性,但应该如何把这
样的过程程式化,让它在更多的同事的工作中发挥作用呢?
这样的问题纠缠了我好久,终于有一天,我得到了一本如字典般的
硬皮
Domain Driven Design
(我们亲切地称它为 “ DDD ” )原版
书,从中找到了答案。然后,我参与了 DDD 中文版的审校工作和
DDD 注释版的注释工作。再后来, InfoQ 中文站的总编霍泰稳又邀
请我一起做了
Domain Driven Design Quickly
这本书的翻译工作。
曾经有人要我用简练的词汇描述 DDD 的中心思想,我个人认为这是
一个比较难的工作,但我愿意去尝试。我的回答是 " 关注精简的业务
模型及实现的匹配 " :
1.
1.
1.
1.
如果你了解 " 模型 " 的定义是对现实的有选择性的精简,然后用这样
的观点去读 DDD 这本书,你就会发现, DDD 其实没有什么太多的
新鲜玩意,它更多地是可以看作是面向对象思潮的回归和升华。在
一个 " 万事万物皆对象 " 的世界里,哪些对象是对我们的系统有用的?
哪些是对我们拟建系统没有用处的?我们应该如何保证我们选取的
模型对象恰好够用?