簡體   English   中英

何時將參數作為構造函數參數或方法參數傳遞

[英]When to pass a parameter as a constructor parameter or as a method parameter

我目前有這個 class,它在 class 方法中使用服務 class。 目前我正在我的方法中創建服務 class 的實例,如下所示。 我想知道的問題是,當涉及到測試時,我使用的是 spock,當在方法中創建 class 的新實例而不是作為依賴注入的構造函數參數傳入時,似乎很難測試. 我想知道將 Service class 的實例作為構造函數參數傳遞給 Handler 是執行此操作的正確方法嗎? 謝謝

public class Handler{
   private Service service;

    public Handler(){}

public void someMethod(ObjectNeededForService object){
   service = new Service(object);
}
}

這是一個棘手的問題,您會找到不同的答案。 如果我理解正確,你基本上是在問構造函數注入是否比 setter 注入好,反之亦然,對嗎?

顯然,當您的 class 中的字段數量有限時,構造函數注入很簡潔。具有 20 個參數的構造函數可讀性不佳,絕對應該避免。 在那種情況下,您將不得不使用 setter 注入並為各個字段一個一個地調用 setter。

但也許如果你有一個 class 有這么多需要注入的字段,那么重構並將你的依賴關系降低到更小的數量會很好。

我個人更喜歡構造器注入,但有 arguments 反對它。

暫無
暫無

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

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