我在这里和其他论坛上看到的很多问题的一个常见反应是“你不需要为此做DDD。它是一个简单的CRUD应用程序,DDD是一个过度工程”。
我是DDD的新手,我觉得DDD中有很多元素具有普遍的吸引力,可以全面使用,无论你的应用程序是否复杂,都要求DDD。例如,应用程序的分层,DDD识别的不同工件等等。可能从基础知识开始,然后承认贫血模型,然后工作/重构尽可能多的纯度。
这种方法听起来不错吗?
或者你会说在每个应用程序的设计中有一个基本的选择,无论是否采用DDD方式,都是“全有或全无”的选择?
更新 (提供更多背景信息,以回应下面的hugh评论)
我正在围绕现有的RuleEngine应用程序构建一个webapp,基本上是CRUD和一些验证,不变量,然后是部署过程。规则创作和语义检查由一段独立的代码完成,我将其作为CRUD的一部分调用,并且我的代码中没有任何语义特定的逻辑。我正在尝试将DDD用于此应用程序,但我发现它可能不够复杂到适合DDD范例。没有为该域定义普遍存在的语言,即除了命名所涉及的实体集之外,该语言还不够专业。我听说我的领域专家在创建,编辑和删除实体方面发言。
答案 0 :(得分:5)
DDD不是全有或全无。此外,DDD中描述的许多模式并不是新的,可以在任何地方找到。 Eric Evans(DDD书籍的作者)刚刚组装了它们,在需要的地方将它们正式化,并将它们相互关联起来。您可以自由使用适合您的问题空间。
经常被忽视的内容:DDD描述了实现模式以及分析模式。分析模式在许多(如果不是大多数)应用程序中可能过度,但实现模式(即实体,规范,服务)可以是在不太复杂的场景中也很有用。
答案 1 :(得分:2)
简而言之,
如果只是CRUD,我就不会打扰了。
另一方面,
如果它有行为,下一个状态依赖于之前的状态,那么你可能想要考虑DDD。
答案 2 :(得分:0)