2012-08-06 44 views
7

我在这里和其他论坛上看到的很多问题的一个常见反应是,“您不需要为此执行DDD,它是一个简单的CRUD应用程序,DDD是过度工程”。DDD是否适合各种应用?

嗯,我是DDD的新手,我觉得DDD中有很多元素具有普遍吸引力并且可以全面使用,无论您的应用程序是否是复杂enuf来强制执行DDD。例如,应用程序的分层,DDD识别的不同工件等等。可能会从基础知识开始,并承认贫血模型,然后向尽可能多的纯度工作/重构。

这种方法听起来不错吗?
或者你会说在每个应用程序的设计中是否有一个根本的选择,就是否采用DDD方式,是“全有还是无”的选择?

UPDATE(提供更多的背景下,为应对休下面的评论)
 我建立围绕现有RuleEngine样的应用,基本CRUD和一些验证,不变量,然后处理的Web应用程序的部署。规则创作和语义检查是由独立的一段代码完成的,我将其作为CRUD的一部分进行调用,并且在我的代码中没有任何语义特定的逻辑。我正在尝试为这个应用程序使用DDD,但我发现它可能不够复杂以适应DDD范例。没有为该领域定义的无处不在的语言,即该语言除了命名所涉及的实体集之外还不够专业化。我听到我的领域专家在创建,编辑和删除实体方面发表演讲。

+2

你的问题不太可能引起很多反应,因为你并没有真正面对特定的挑战,而是试图开始关于给定方法的适用性的广义讨论,答案通常是“它取决于”。 – 2012-08-06 08:26:59

+1

谢谢休!对于有针对性的评论和downvote,PLZ看到上面的更新,试图添加一些上下文,希望这将有助于它通过“它取决于”点:)。 – redzedi 2012-08-06 09:01:59

+0

在这种情况下,我不是downvoter。 +1提供更多细节。 – 2012-08-06 09:11:00

回答

5

DDD并非全部或全无。此外,DDD中描述的许多模式并非新鲜事物,可以在整个地方找到。 Eric Evans(DDD书的作者)将它们组合起来,在需要时将它们形式化,并将它们相互关联。你可以自由使用适合你的问题空间的东西。

什么经常被忽视:DDD描述实现模式以及分析模式。分析模式可能在许多(如果不是大多数的话)应用程序中被矫枉过正,但是实施模式(即,实体,规格,服务)也可以在较不复杂的情况下有很大的应用。

2

总之,

如果只是CRUD,我不会理会。

在另一方面,

如果它有问题,那里的东西下一状态依赖于以前的状态,然后DDD是你可能要考虑的东西。