DIP

Page content

[TOC]

Brief introduction about DIP.

依赖倒转原则 DIP

定义

抽象不应该依赖细节,细节应该依赖于抽象。

高层模块不应该依赖于低层模块,两个都应该依赖于抽象。

说白了就是针对接口编程,不要对实现编程。

类图

dip

用例

具体见代码 code example

注意

什么是控制反转 Inversion Of Control

把程序控制权交给第三方。

什么是依赖注入 Dependency Injection

不通过 new() 的方式在类内部创建依赖类对象, 而是将依赖的类对象在外部创建好之后,通过构造函数、函数参数等方式传递(或注入)给类使用。

依赖注入框架 和 控制反转容器

例如 Spring 框架

小结

  • 控制反转是一种编程思想,把控制权交给第三方。依赖注入是实现控制反转最典型的方法。

  • 依赖注入(对象)的方式要采用“基于接口而非实现编程”的原则,说白了就是依赖倒转。

  • 底层的实现要符合里氏替换原则。子类的可替换性,使得父类模块或依赖于抽象的高层模块无需修改,实现程序的可扩展性。

参考

《大话设计模式》

https://time.geekbang.org/column/article/177444