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