![]() |
1
10
DDD足够新(至少在某种意义上是这样),所以说“它是如何完成的”可能还为时过早。尽管我们没有给它起一个很酷的名字,但这个想法已经存在了很长一段时间了。 在任何情况下,简短的回答(imao)都是“是的,但是……”进行域驱动设计的想法是非常明确地建模域。你看到的是一个领域模型,也就是说一个面向对象的模型,它用问题领域的语言描述问题领域。其思想是,一个领域模型,因为它是“真实世界”的模型,对变化相对不敏感,而且也倾向于局部化变化。因此,例如,如果您对员工的想法发生了变化,可能是通过添加邮件地址和物理地址,那么这些变化将相对本地化。 但是,一旦您拥有了这个模型,您就拥有了我所维护的体系结构决策。例如,您有一个未实现的持久性层,它实际上可能只是SQL的构造。它也可以是一个休眠层,或者使用python pickle,或者甚至是像google-appengine分布式表结构这样的疯狂的东西。 问题是,这些决策是单独做出的,并且与其他的基础理论相比较,而不是域建模决策。 我所做的一些实验取得了很好的效果,那就是在Python中做域模型,然后用它构建一个模拟器,而不是实现最终的系统。这使得客户可以尝试一些东西,也可能允许您对最终实现必须确定的事情进行定量评估。 |
![]() |
2
14
领域驱动的设计非常简单。它说:让你的模型类反映真实世界。因此,如果您有员工,那么就有一个员工类,并确保它包含赋予它“员工素质”的属性。 您要问的问题不是关于DDD,而是关于一般的类体系结构。我认为你对一些关于你正在看的课程的决定提出质疑是正确的,但这与DDD无关。一般来说,它与OOP编程设计模式更相关。 |
![]() |
3
8
对我来说,DDD不同于“纯粹”的模型驱动设计的是“聚合根”的概念,即应用程序是 只允许保留对聚合根的引用 ,一般来说,您只有一个聚合根类的存储库,而不是聚合根使用的类。 这将极大地清理代码;另一种方法是存储每个模型类,它只是一个分层设计,而不是DDD |
![]() |
Tony Raimo · 域实体是否应该调用存储库? 7 年前 |
![]() |
Seb · DDD只读存储库返回“值对象” 7 年前 |
![]() |
tlt · 使用嵌套对象和大集合进行聚合根优化 7 年前 |
![]() |
PatrickSJ · DDD,状态对象/值对象 7 年前 |
![]() |
msmani · DDD更改聚合根id 7 年前 |
![]() |
DuskMcDusk · 逻辑和性能中的聚合根冲突 7 年前 |