依賴注入(Dependency Injection, DI)是實現依賴倒置原則(DIP)的具體技術手段,它通過將依賴對象的創建和管理交給外部容器,從而實現高層模塊與低層模塊的解耦。下面從原理、實現方式、框架應用及最佳實踐四個方面詳細解析:
一、依賴倒置原則(DIP)的核心思想
- 高層模塊不依賴低層模塊:兩者都依賴抽象(接口或抽象類)
- 抽象不依賴細節:細節(具體實現)依賴抽象
示例場景:
電商系統中,OrderService
(高層模塊)需要調用支付功能,但不應該直接依賴具體支付方式(如PayPalPayment
),而是依賴支付接口(如IPaymentMethod
)。
二、依賴注入的三種實現方式
1. 構造函數注入(Constructor Injection)
通過構造函數傳遞依賴對象,確保對象創建后即處于可用狀態。
// 定義抽象接口
public interface IPaymentMethod {void Process(double amount);
}// 具體實現類
public class PayPalPayment : IPaymentMethod {public void Process(double amount) {