有关依赖倒置原则的一个实际问题:
我们想在许多库或DLL中构建我们的系统。
如果较低级库的组件或类应依赖于抽象,则它是Iinterface还是纯抽象类,而被调用方可执行文件或较高级库也应依赖于该抽象,而不是具体的类,那么库应该编译抽象吗?
是的,具体的课程是由工厂接线并提供的。
从逻辑上讲,它属于可执行文件或更高级别的库,但出于实用目的,应该将其编译到更低级别的库中。
答案 0 :(得分:2)
最灵活的(模块化)方法是将抽象编译成其自己的二进制文件(库)。这使任何人都可以使用和/或扩展抽象,而无需继承任何实现细节。理想情况下,这意味着无需继承任何传递依赖项。
如果抽象仅由一个客户端使用,则可以安全地将其及其使用方进行编译,以减少二进制文件的数量。这将使具体的实现与客户端脱钩。
您不应该做的一件事就是编译抽象及其任何实现。这将使每个客户端都与实现代码及其传递依赖项耦合。