什么是依赖倒置原则,为什么它很重要?
请查看此文档:
The Dependency Inversion Principle。
它基本上说:
>高级模块不应该依赖于低级模块。两者都应该取决于抽象。
>抽象不应该依赖于细节。细节应取决于抽象。
至于为什么它很重要,简而言之:变更是有风险的,并且通过依赖于概念而不是实施,您减少了呼叫站点的变更需求。
实际上,DIP减少了不同代码之间的耦合。我们的想法是,尽管有许多方法可以实现,例如,日志记录工具,但使用它的方式应该是及时相对稳定的。如果您可以提取表示日志记录概念的接口,则此接口应该比其实现更加稳定,并且调用站点应该更少受到在维护或扩展该日志记录机制时可能进行的更改的影响。
通过使实现依赖于接口,您可以在运行时选择哪种实现更适合您的特定环境。根据具体情况,这也可能很有趣。