2011-11-03 83 views
0

在我的項目中我實現了一個UdpListener。它旨在接收特定端口上的多個IP(多播組)的udp數據包。依賴注入與方法調用

我想了解一下使用構造(public UdpListener(int port, EventList<IPAddress> multicastGroups))是否注入對象(事件收集與multicastGroupIPs)或提供接口的兩種方法JoinMulticastGroupRemoveMulticastGroup

我不確定哪種方式更清潔,所以我對你的意見很感興趣。

編輯:

我想使用Unity DI。所以port是由配置文件提供的,但是代碼爲multicastGroupIPs的對象。

回答

3

有時候是否使用構造函數或setter /方法調用注入是一個問題。

在這種情況下,您應該考慮多播組集合是否可變。如果你能確定它永遠不會改變,你可以將它傳遞給構造函數。擁有永恆不變的狀態永遠是好的做法。

另一方面,構造函數應該只需要創建某種類型的有效對象真正需要的東西。也許你可以找到一些默認值,但我認爲這些多播組是你的偵聽器需要的功能。

因此,如果該集合是不可變的,則將其傳遞給構造函數。但是,如果所有實現該接口的監聽器都很常見,那麼您可以永遠不要確定方法調用。