在我的项目中,我实现了UdpListener
。它旨在接收特定端口的多个IP(组播组)的udp数据包。
我想知道是否使用构造函数(public UdpListener(int port, EventList<IPAddress> multicastGroups)
)注入一个对象(使用multicastGroupIPs的事件集合),或者在JoinMulticastGroup
和RemoveMulticastGroup
的接口上提供两种方法。
我不确定哪种方式更干净,所以我对你的意见感兴趣。
编辑:
我想使用Unity DI。因此port
由配置文件提供,但multicastGroupIPs
对象由代码提供。
答案 0 :(得分:3)
有时候使用构造函数或setter /方法调用注入是一种品味问题。
在这种情况下,您应该考虑多播组集合是否可变。如果你可以肯定它永远不会改变你可以将它传递给构造函数。拥有不可变的状态总是很好的做法。
另一方面,构造函数应该只需要创建某种类型的有效对象所需的内容。也许您可以找到一些默认值,但我认为您的监听器需要这些多播组才能运行。
因此,如果集合是不可变的,则将其传递给构造函数。但是,如果实现接口的所有侦听器都很常见,则选择方法调用,因为您无法确定。