依賴注入(Dependency Injection,簡稱 DI)是一種軟件設計模式,旨在將對象之間的依賴關系從代碼內部解耦出來,通過外部提供的方式來建立依賴關系,從而提高軟件的可維護性、可測試性和可擴展性。以下從概念、工作原理、常見類型、在不同框架中的應用等方面進行詳細解釋:
概念
在軟件系統中,一個類(稱為客戶端類)往往需要使用另一個類(稱為依賴類)的功能,這就形成了依賴關系。傳統方式下,客戶端類會在內部直接創建或引用依賴類的實例。而依賴注入模式則是將依賴類的實例通過外部傳遞的方式提供給客戶端類,客戶端類不需要自己負責創建依賴類的實例。
例如,一個UserService
類需要使用UserRepository
類來訪問數據庫中的用戶數據,傳統做法是在UserService
內部實例化UserRepository
:
public class UserService
{private readonly UserRepository _userRepository = new UserRepository();// 業務邏輯
}
采用依賴注入后,UserRepository
的實例由外部傳入:
public class UserService
{private readonly UserRepository _userRepository;public UserService(UserRepository userRepository){_userRepository = userRepository;}