依賴倒置、依賴注入和控制反轉傻傻分不清楚?


依賴倒置

啥是依賴倒置?依賴倒置是SOLID原則之一,詞的字面意思就是將依賴關系的倒置。

其實依賴倒置大家早就會了,這個實際上就是面向接口編程。舉個例子,現在電子產品更新換代快,可能沒過多久咱們就想換一台電腦玩玩。即使電腦的品牌不同,但我們還是可以正常使用,總不會換個牌子就不會用了吧。

所以如果用代碼表示的話,我們用接口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();
    }
}

為啥叫它倒置呢,因為

依賴倒置1

依賴倒置2

是不是箭頭倒過來了呢😁

依賴注入與控制反轉

依賴注入是實現控制反轉的具體手段,這倆聽起來高大上,其實...

public class Main {
    public static void main(String[] args) {
        //創建對象
        Dell dell=new Dell();
        //依賴注入
        User user=new User(dell);
        user.usePC();
    }
}

依賴注入指的是不在類內部使用new來創建依賴對象,而是將其在外部創建好后,通過構造函數或者賦值函數注入進類中,也就是當參數傳進去。

而控制反轉就是依賴注入中說的,將依賴類實例化的控制權交給外部邏輯處理。我不心系你這東西的創建,我只關心你提供的功能,一切都按我的標准指定好,拿來用就行。

比如我們筆記本電腦的各個部分是不同廠家生產的,筆記本電腦廠商只需把標准給各個零件生產商,讓他們按要求生產,自己最后組裝拿來用就好了。這樣我們就達到了解耦的目的。

控制反轉容器

因為我們在程序設計時采用了依賴注入,那么不可避免的,我們要在程序里寫大量的new。但對象的創建與依賴注入跟具體的業務並無關系,我們可不可以將其抽象成框架呢?

於是我們就有了IOC容器或者說依賴注入框架,只需要簡單配置一下就可以由框架自動創建對象、管理對象以及依賴注入這些原本需要我們自己來做的事情。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM