我在第一次了解 DAO 层时遇到了这个问题,其中一个人强烈建议不要做具体的实现,而是通过接口编程。然而,随着时间的推移,问题出现了:为什么?可能所有的 DAO 类都不会改变,因此为每个类创建个人界面是没有意义的。即使 DBMS 本身发生变化,您也只需稍微更改查询语法。这就是新闻……这不仅发生在 DAO 中。当然,每个人都已经看到,人们不仅创建了一个类(例如)ConnectHelper,还创建了一个接口ConnectHelper,然后按类型实现了它ConnectHelperImpl. 同时,您很可能永远不必创建另一个实现此接口的类。因此,这对我来说是完全无法理解的——这是规范还是人们试图使他们的代码如此灵活以至于最终它是有害的并且使代码混乱?
这是相同的架构原理。像许多其他事情一样,在小型应用程序(宠物项目)中,这更多的是开销而不是必需品。并且它的价值随着代码库的增长而增长。重要的不仅仅是实现,设计良好的接口通常可以减少代码耦合并提供依赖倒置。我不会在这里详细介绍它,因为您总是可以阅读 Robert Martin 在 Clean Architecture 中关于此主题的 SOLID 章节,例如。
而不是一个结论,而是我个人的看法,为什么,即使考虑到明显的开销,至少在开始时,你应该尝试遵循干净代码和干净架构的所有原则:如果没有实践,这一切都会变得更加困难。