【问题标题】:Does it considered as a good practice to write interfaces in a higher layer?在更高层编写接口是否被认为是一种好习惯?
【发布时间】:2020-08-11 01:36:29
【问题描述】:

我认为最好在“应用程序”层(业务)上编写工作单元的接口,并将它们的实现写在“持久性”层(DAL)上。目标是使层尽可能地解耦。

想象一下您决定将 DAL 从 EF 核心更改为 Dapper 的场景。这种转变如何不那么痛苦?让接口发音为“我需要这个查询、这个和那个,以便开展我的业务”并将其映射到新的数据访问层不是更好吗?

【问题讨论】:

  • 是的,您应该在应该独立于基础设施(即业务层)的层中声明接口。您通过接口定义合同,较低级别的组件应实现这些接口。有了它,您可以确保在您的业务层中,您只依赖于在该层中定义好的东西。例如,您在业务(域)层中定义了一个存储库接口,并且该接口的实现在持久层中定义。

标签: separation-of-concerns clean-architecture decoupling


【解决方案1】:

您的想法是正确的,并将重点放在您的业务逻辑上,并将技术细节转化为您业务逻辑的插件。

另请参阅 Robert C. Martin 的“清洁建筑”,了解对同一方向的更深入思考。

https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html

【讨论】:

  • 如果你还没看过,我建议你也看这个视频youtube.com/watch?v=Nsjsiz2A9mg
  • 我的灵感完全来自您从一开始就提出的建议。非常感谢!
猜你喜欢
  • 1970-01-01
  • 2021-05-04
  • 2019-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多