2011-11-03 82 views
0

在我的项目中我实现了一个UdpListener。它旨在接收特定端口上的多个IP(多播组)的udp数据包。依赖注入与方法调用

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

我不确定哪种方式更清洁,所以我对你的意见很感兴趣。

编辑:

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

回答

3

有时候是否使用构造函数或setter /方法调用注入是一个问题。

在这种情况下,您应该考虑多播组集合是否可变。如果你能确定它永远不会改变,你可以将它传递给构造函数。拥有永恒不变的状态永远是好的做法。

另一方面,构造函数应该只需要创建某种类型的有效对象真正需要的东西。也许你可以找到一些默认值,但我认为这些多播组是你的侦听器需要的功能。

因此,如果该集合是不可变的,则将其传递给构造函数。但是,如果所有实现该接口的监听器都很常见,那么您可以永远不要确定方法调用。