3.2 依賴注入的3種實現方式

來源:互聯網
上載者:User

 

3.2  依賴注入的3種實現方式

在講解依賴注入的3種實現方式之前,這裡先澄清一下依賴注入的意義:讓組件依賴於抽象,當組件要與其他實際對象發生依賴關係時,通過抽象來注入依賴的實際對象。

依賴注入的3種實現方式分別是:介面注入(interface injection)、Set注入(setter injection)和構造注入(constructor injection)。接下來筆者還將主要通過舉例的方式,把依賴注入的3種實現方式介紹給讀者。

3.2.1  介面注入(interface injection)

介面注入指的就是在介面中定義要注入的資訊,並通過介面完成注入。結合前面的樣本,其具體步驟如下。

(1)編寫一個介面IBusiness,各種資料庫的注入將通過這個介面進行。IBusiness.java的範例程式碼如下:

//******* IBusiness.java**************

public interface IBusiness {

         public void createDI(DataBase db);

}

(2)任何想要使用資料庫執行個體的類都必須實現這個介面,商務邏輯類Business實現這個介面IBusiness。Business.java的範例程式碼如下:

//******* Business.java**************

public class Business implement IBusiness {

         private DataBase db;

         public void createDI (DataBase db) {

                   this.db = db;

         }

         ……

         //根據注入的資料庫類,從×××資料庫中擷取資料

         public void getData() {

                   ……

                   db.getData();

                   ……

         }

}

(3)編寫測試類別TestBusiness。TestBusiness.java的範例程式碼如下:

//******* TestBusiness.java**************

public class TestBusiness {

         private Business business = new Business();

         ……

         //根據注入的資料庫類,從Oracle資料庫中擷取資料

         public void getData() {

                   ……

                   business. createDI (new OracleDataBase());

                   business.getData();

                   ……

         }

}

如果要完成依賴關係注入的對象,必須實現IBusiness介面。

3.2.2  Set注入(setter injection)

Set注入指的就是在接受注入的類中定義一個Set方法,並在參數中定義需要注入的元素。為了讓類Business接受DataBase的注入,需要為它定義一個Set方法來接受DataBase的注入。Business.java的範例程式碼如下:

//******* Business.java**************

public class Business {

         private DataBase db;

         public void setDataBase(DataBase db) {

                   this.db = db;

         }

         ……

         //根據注入的資料庫類,從×××資料庫中擷取資料

         public void getData() {

                   ……

                   db.getData();

                   ……

         }

}

更詳細的代碼,可以參看3.1節的第二個例子,採用的就是Set注入的方式。

3.2.3  構造注入(constructor injection)

構造注入指的就是在接受注入的類中定義一個構造方法,並在參數中定義需要注入的元素。為了讓類Business接受DataBase的注入,需要為它定義一個構造方法,來接受DataBase的注入。Business.java的範例程式碼如下:

//******* Business.java**************

public class Business {

         private DataBase db;

         public Business (DataBase db) {

                   this.db = db;

         }

         ……

         //根據注入的資料庫類,從×××資料庫中擷取資料

         public void getData() {

                   ……

                   db.getData();

                   ……

         }

}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.