1

关于依赖倒置原则的一个实际问题:

我们希望在许多库或 DLL 中构建我们的系统。

如果较低级别库的组件或类应该依赖于抽象,无论是 Iinterface 还是纯抽象类,并且被调用方可执行文件或更高级别库也应该依赖于该抽象而不是具体类,那么应该将其放入哪个库抽象被编译?

是的,当然,具体类是由工厂连接和提供的......

从逻辑上讲,它属于可执行或更高级别的库,但也许出于实际目的,它应该编译到较低级别的库中。

4

1 回答 1

2

最灵活(模块化)的方法是将抽象编译成它自己的二进制文件(库)。这允许任何人在不继承任何实现细节的情况下使用和/或扩展抽象。理想情况下,这意味着不继承任何传递依赖。

如果抽象仅由一个客户端使用,您可以安全地与它的消费者一起编译它,以减少二进制文件的数量。这将使具体实现与客户端分离。

您不应该做的一件事是编译抽象及其任何实现。这会将每个客户端耦合到实现代码及其传递依赖项。

于 2018-12-10T20:55:02.743 回答