程序员

实现DDD读书笔记1

2017-06-29  本文已影响97人  勇赴

什么是DDD

DDD是英文Domain-Driven Design的简称,在2004年由Eric Evans提出的一套软件设计的概念和方法论。

DDD并不是关于技术的,而是关于讨论、聆听、理解、发现业务价值的,而这些都是为了将知识集中起来。将领域专家引入到团队是大有好处的。

开发过程中,最大的鸿沟之一便存在于领域专家和开发者之间,通常,领域专家将关注点放在交付业务价值上,而开发者则将注意力放在技术实现上。

影响:领域专家和开发者虽一同工作,他们之间的协作也只是表面的。过程中产生了一种映射:将业务人员所想的映射到开发者所理解的。这样,软件便不能完全反映出领域专家的思维模型。这种鸿沟将增加软件的开发成本。随着开发者转到其他项目或离职,本应驻留在软件中的领域知识也就丢失了。

另一个问题,发生在多个领域专家之间存在分歧的时候。因为每个专家只熟悉某个或者某些特定领域。另外在某个领域找不到真正的专家也是可能的,此时,有人可能对领域有所了解,但他更像一个业务分析员。这些问题将导致相互矛盾的软件模型。

更糟的是,软件的技术实现可能错误地改变软件的业务规则。比如:ERP软件通常修改业务操作以满足某个特定用户的需求。解决方案才是主要的投入。

DDD的作用是简化,而不是复杂化。我们应该采用最简单的方式对复杂领域进行建模,而不是使问题变得更加复杂。

贫血领域对象有出现的原因:它反映了一种自然的过程式的编程风格。很多开发者都是学着示例代码做开发,通过情况下,示例代码只是尽可能简单的方式来展示某个特定的概念或API特性,而并不强调要遵循多好的设计原则。

如何DDD

DDD两大支柱:

掌握通用语言的方法:

对通用语言的理解:

通用语言((ubiquitous language)实例

个人(实体):包含并管理用户的个人信息.包括名字和联系方式等。
激活租户:通过该操作激活一个租户,激活后再对租户的当前状态进行确认。
禁用租户:通过该操作禁用一个租户,在禁用一个租户时,用户可能还没有被认证。
认证服务:协调对用户的认证过程,首先需要保证他们所属的租户处于激活状态。

上一篇 下一篇

猜你喜欢

热点阅读