gpt4 book ai didi

c# - DDD : what are the OOP alternatives for procedural Application Services?

转载 作者:行者123 更新时间:2023-11-30 19:24:47 27 4
gpt4 key购买 nike

我最近得到了一本书领域驱动设计的模式、原则和实践,作者是 Scott Miller 和 Nick Tune。它有一些很好的 C# 示例,因此与我之前阅读的其他 Java DDD 书籍有点不同。由于 C# 对委托(delegate)和事件的支持,域事件实现非常简洁。

但是,有一件事让我很担心,正如书中在应用服务一章中所说的那样,它应该是“procedural in style and thin”。我知道应用层应该很薄,但为什么要采用程序风格呢?我不想写程序代码,否则我一开始就不会选择 DDD。我还发现这篇 stackoverflow 文章还标记了 Application Services are procedural code:

https://softwareengineering.stackexchange.com/questions/279369/conceptual-mismatch-between-ddd-application-services-and-rest-api

所以你看到了吗?应用程序服务在风格上是程序化的,而不是 OOP。这让我想知道我是否可以通过将应用程序服务的过程接口(interface)替换为面向对象的接口(interface)来改进设计以使其更加面向对象。 This article建议方法对象可以,它有效吗?程序化应用程序服务的更多 OO 替代方案是什么?任何人都可以详细说明吗?

http://ayende.com/blog/2145/entities-services-and-what-goes-between-them

最佳答案

从术语的编程范式意义上来说,应用程序服务不是过程性的。它是一个对象,封装了数据(对其协作者对象的引用)和行为——协调对这些协作者的调用。

从本质上讲,它可能看起来是程序性的,因为有一系列操作,但是当有一个应用任务暗示着许多步骤时,例如:

  • 从存储库中获取域对象
  • 对该对象调用一个方法
  • 保存对象

无论编程范式如何,您都无法摆脱这种过程性/顺序性。

例如,即使您正在使用面向对象的责任链模式,每个步骤都由链中的单独参与者执行,您仍然需要有一个知道如何组装链的“主”对象以正确的顺序,因此根据定义知道程序,因此它同样是程序性的。

关于c# - DDD : what are the OOP alternatives for procedural Application Services?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33184211/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com