我无法弄清楚依赖倒置原则(SOLID 原则之一)和一般的“代码到接口”或分离接口模式之间的区别。他们都主张创建一个抽象层来解耦低层和高层模块。
DI 原则设想创建接口以在较高层和较低层模块之间进行交互,但也坚持接口必须是较高层包的一部分。
为什么这应该是更高级别而不是更低级别的一部分?暴露其行为的是较低级别,所以解耦接口不应该是较低级别的一部分吗?如果有多个更高级别的模块依赖于相同的较低级别怎么办?
不然的话,
为什么不做一个单独的包来放置所有的接口,这样高层和低层都可以使用呢?(这是由分离接口模式设想的。)
我的困境是,我无法弄清楚它们的相对用途和好处。
请不要引用 Derek Greer 或 Robert Martin 的文章。我已经阅读了这些文章,但困惑仍然存在。