我一直在文章中看到DDD (领域驱动设计)被大量使用-我读过关于DDD的维基百科条目,但仍然不能弄清楚它到底是什么,以及我如何在创建我的网站时实现它?
发布于 2009-08-03 13:54:32
首先,如果你不知道你需要它,那么你就有可能不需要它。如果您没有认识到DDD解决的问题,那么您可能就没有这些问题。甚至DDD的拥护者也会经常指出,DDD只适用于大型(>6个月)的项目。
假设你现在还在阅读,我对DDD的看法是:
DDD是关于尝试使您的软件成为真实系统或过程的模型。在使用DDD时,您需要与能够解释实际系统如何工作的密切合作。例如,如果您正在开发一个处理赛马下注的系统,那么您的领域专家可能是一位经验丰富的博彩公司。
在您和领域专家之间,您构建了一种普遍存在的语言(UL),它基本上是对系统的概念性描述。这个想法是,您应该能够以领域专家可以阅读并验证其正确性的方式来记录系统所做的工作。在我们的打赌示例中,无处不在的语言将包括诸如“种族”、“打赌”、“赔率”等词的定义。
UL所描述的概念将构成您面向对象设计的基础。DDD为您的对象应该如何交互提供了一些明确的指导,并帮助您将对象划分为以下类别:
date date value对象,表示可能具有子部分的值(例如,日期可能具有、month和year)
中的方法操作
DDD还推荐了几种模式:
用于持久化的模式(保存和加载数据,通常是在database)
现在,在这一点上,我必须说,如果你以前没有听说过这些事情,你不应该在任何有最后期限的项目上尝试使用DDD。在尝试DDD之前,您应该熟悉design patterns和enterprise design patterns。了解这些使得DDD更容易掌握。如上所述,InfoQ提供了一个free introduction to DDD (您也可以在那里找到关于DDD的讨论)。
发布于 2009-08-03 13:38:25
以StackOverflow为例。不是开始设计一些web表单,而是首先专注于对问题域中的实体进行面向对象的建模,例如用户、问题、答案、投票、评论等。由于设计是由问题域的细节驱动的,因此称为域驱动设计。
您可以在Eric Evans' book中阅读更多内容。
https://stackoverflow.com/questions/1222392
复制相似问题