Answers:
首先,如果您不知道自己是否需要它,那么就有可能不需要它。如果您不认识DDD解决的问题,那么也许您就没有这些问题。甚至DDD倡导者也会经常指出DDD仅用于大型(> 6个月)项目。
假设您现在仍在阅读,我对DDD的看法是:
DDD旨在使您的软件成为真实系统或流程的模型。使用DDD时,您应与可以解释真实系统工作原理的领域专家紧密合作。例如,如果您正在开发一个处理赛马投注的系统,则您的领域专家可能是经验丰富的博彩公司。
在您自己和领域专家之间,您将构建一种普遍存在的语言(UL),这基本上是系统的概念性描述。这样做的想法是,您应该能够以域专家可以读取并验证其正确性的方式记录系统的工作。在我们的投注示例中,无处不在的语言将包括诸如“种族”,“投注”,“赔率”等单词的定义。
UL描述的概念将构成您面向对象设计的基础。DDD为对象之间的交互方式提供了一些明确的指导,并帮助您将对象分为以下几类:
DDD还建议了几种模式:
现在,在这一点上,我不得不说,如果您以前从未听说过这些事情,那么您不应该尝试在有期限的任何项目上使用DDD。在尝试DDD之前,您应该熟悉设计模式和企业设计模式。了解这些使DDD更加容易掌握。而且,如上所述,InfoQ 免费提供了DDD简介(您也可以在其中找到有关DDD的讨论)。
以StackOverflow为例。首先,您无需集中精力设计某些Web表单,而是着重于对问题域内的实体进行面向对象的建模,例如,用户,问题,答案,投票,注释等。由于设计是由问题的细节决定的领域称为领域驱动设计。
您可以在Eric Evans的书中阅读更多内容。