啥是依赖倒置?依赖倒置是SOLID原则之一,词的字面意思就是将依赖关系的倒置。java
其实依赖倒置你们早就会了,这个实际上就是面向接口编程。举个例子,如今电子产品更新换代快,可能没过多久我们就想换一台电脑玩玩。即便电脑的品牌不一样,但咱们仍是能够正常使用,总不会换个牌子就不会用了吧。编程
因此若是用代码表示的话,咱们用接口IPC
来代替具体的类,而后各个类去实现它的programming
方法。框架
public interface IPC{ void programming(); } public class User { private IPC pc; //若是写成private Dell dell; //那咱们换成联想的电脑就麻烦了 public User(IPC pc) { this.pc = pc; } public void usePC(){ pc.programming(); } }
为啥叫它倒置呢,由于函数
是否是箭头倒过来了呢😁this
依赖注入是实现控制反转的具体手段,这俩听起来高大上,其实...设计
public class Main { public static void main(String[] args) { //建立对象 Dell dell=new Dell(); //依赖注入 User user=new User(dell); user.usePC(); } }
依赖注入指的是不在类内部使用new来建立依赖对象,而是将其在外部建立好后,经过构造函数或者赋值函数注入进类中,也就是当参数传进去。code
而控制反转就是依赖注入中说的,将依赖类实例化的控制权交给外部逻辑处理。我不心系你这东西的建立,我只关心你提供的功能,一切都按个人标准指定好,拿来用就行。对象
好比咱们笔记本电脑的各个部分是不一样厂家生产的,笔记本电脑厂商只需把标准给各个零件生产商,让他们按要求生产,本身最后组装拿来用就行了。这样咱们就达到了解耦的目的。blog
由于咱们在程序设计时采用了依赖注入,那么不可避免的,咱们要在程序里写大量的new。但对象的建立与依赖注入跟具体的业务并没有关系,咱们可不能够将其抽象成框架呢?接口
因而咱们就有了IOC容器或者说依赖注入框架,只须要简单配置一下就能够由框架自动建立对象、管理对象以及依赖注入这些本来须要咱们本身来作的事情。