我想實現依賴注入來使我的應用測試友好。 我有一個相當基本的疑問。依賴注入和軟件層的解耦
數據層使用SqlConnection對象連接到SQL服務器數據庫。 SqlConnection對象是數據訪問層的依賴項。按照 依賴注入的規律,我們不得new()依賴對象,而寧願通過構造函數參數接受它們。不想破壞DI神,我在我的DAL中忠實地創建了一個構造函數,它接受了SqlConnection。
業務層調用DAL。因此業務層必須傳入SqlConnection。 表示層調用業務層。因此它也必須通過SqlConnection 到業務層。
這對類隔離和可測試性很好。但是,我們不是僅僅將 用戶界面和業務層連接到數據層的特定實現,而發生 以使用關係數據庫?
爲什麼Presentation和Business層需要知道底層數據存儲 是SQL?如果應用程序需要支持除SQL服務器 以外的多個數據源(例如XML文件,逗號分隔文件等),那麼該怎麼辦?另外,如果我添加另一個對象 (我的數據層依賴於它) )。現在,我要 修改上層來傳遞這個新對象。
我該如何避免這種旋轉木馬,並獲得DI沒有痛苦的所有好處?
+1優秀的問題。 – Matt 2013-02-25 21:35:12