我有一個從CSV文件操作導入產品的類,它需要大約7個參數。這是進口商確實需要的信息。混合基於構造函數和基於setter的注射是一件壞事嗎?
所有這些參數具有相同的使用壽命。最後,我們必須有一個Immutable Object。
我太害怕,無法全部列的,因爲它會影響到可讀性構造函數,決定將其中3至setter方法注射。但顯然這不是一個優雅的解決方案。
問題:
1)混合是基於構造函數和setter基於注射一種不好的做法?
2)如何解決這個問題?
我在想由Martin Fowler將「引入參數對象」重構,但有一個問題與此有關。
4參數可以被移動到參數對象很容易(客戶ID,專案編號,languageId等) - 所有的整數。
其他3個參數是我注入的對象(它是模擬單元測試所必需的)。
這將取決於您的DI容器...有些使這比其他更容易。 – skaffman 2009-12-31 15:10:37
@skaffmann:我非常不同意。 DI模式的使用不應該由DI容器的選擇來決定 - 容器可以幫助你,而不是限制你。 – 2009-12-31 15:26:27
@Nikita - 爲什麼不引入完整的參數對象並將你的模擬注入參數? – 2009-12-31 15:36:30