单一职责原则和开闭原则原理比较简单,但实践起来比较困难。但是依赖反转原则正好相反,理解起来比较困难,用起来比较简单。
1、控制反转
控制反转是一个比较笼统的设计思想,并不是一个具体的实现方法,一般指导框架层面的设计,SpringIOC中的“控制”指的是类与类之间依赖关系的创建,而“反转”是指没有使用框架之前,程序员自己创建类与类之间的依赖关系。在使用了框架之后,类与类之间依赖关系的创建从程序员“反转”给了Spring 框架。
2、依赖注入
依赖注入和控制反转恰好相反,是一种编程技巧。我们不通过new的方式在类中创建依赖关系。而是将依赖关系在外部创建好之后,通过构造函数,函数参数等方式注入给类来使用。依赖注入“基于接口,而非实现编程”,能够灵活的替换类与类之间的依赖关系。依赖注入提高的代码的扩展性,是“开闭原则”在编程中的一种实现方式。
3、依赖注入框架
我们通过依赖注入框架提供扩展点,简单配置一下所有需要的类及其类与类之间的依赖关系。就可以实现由框架自动创建对象、管理对象的生命周期、依赖注入等原本需要程序员来做的事情。
依赖反转原则,英文名:Dependency Inversion Principle,简称DIP。高层模块不要依赖底层模块,高层模块和底层模块应该通过抽象来互相依赖。除此之外,抽象不要依赖具体的实现细节,具体实现细节依赖抽象。
简单的说,调用者属于高层,被调用者属于底层。在平时的开发中,高层模块依赖底层模块是没有任何问题的。实际上,依赖反转原则跟上面的控制反转有些类似,主要是用来指导框架层面的设计
注:依赖反转原则主要是用来指导框架层面的设计
因篇幅问题不能全部显示,请点此查看更多更全内容