簡體   English   中英

重構依賴注入時如何知道要尋找的內容

[英]How to even know what to look for when refactoring for dependency injection

今天只需閱讀幾篇有關DI的文章,我就有責任重構一個項目以使用AutoFac :)太好了!

例如,這是我的代碼中一個類的快照:

public class LoginManager : ManagerBase
{
// stuff 

    public LoginModel LoadLoginPageData()
        {
            LoginModel model = new LoginModel();
 model.blahblah = "whateverrr"
}
}

那么如何去做呢? 從我的學習中,我看到了一個new LoginModel()語句,因此我將為其創建一個接口,並將其作為參數傳遞給此類的構造函數?

顯然,重構實際上取決於您當前針對應用程序的目標。 在這種情況下,您的方法確實依賴於LoginModel,因為您的方法需要一個Login模型的實例才能起作用。 (這就是定義您的依賴關系的原因)

您可以通過制作接口或抽象類來抽象模型,然后將其注入LoginManger的構造函數中,但是或多或少與松散耦合是一致的。

這是一個重要的區別。 您不需要松耦合即可實現依賴注入。 依賴注入應該解決在運行時或編譯期間換出對象依賴的問題。 因此有助於松散耦合。

在您的特定示例中,您無需將LoginModel注入類的構造函數中,以免您計划在整個類中使用同一模型實例。 如果您仍在嘗試依賴項注入,只要其余LoginManger不需要了解該LoginModel實例,就可以擺脫方法注入。 同樣,您可以注入特定的LoginModel實例而無需創建模型的抽象版本-除非您計划將其替換為相似但變化的LoginModel。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM