我相信我的问题不是针对特定语言的。
我有一个班级,比如说EventConsumer
,需要听别人的对象事件,比如EventProducer
,(准确地说.Net Form
事件)并做出适当的反应,所以其中一个构造函数参数是该对象(public EventConsumer(EventProducer producer, ...)
)。在构造函数中,我订阅了生产者的事件,这几乎就是它。我真的不需要继续引用消费者。当事件生产者也是垃圾收集时。
所以可以在代码中看到如此奇怪的一行,看起来什么也没做?例如:
new EventObserver(eventConsumer, config);
这是一种正确的方法吗?这不是有点奇怪吗?
答案 0 :(得分:1)
你是对的,它本身的对象创建很奇怪 - 在6个月的时间内查看代码时,几乎肯定会让你(或其他开发人员)感到困惑。
通过向EventObserver
类添加静态方法来创建实例,我会使它更“友好”:
public static CreateObserver(EventProducer eventProducer)
{
// Create new instance of EventObserver to handle events from producer
// no need to keep track of object as it will be appropriately
// garbage collected.
new EventOvserver(eventProducer);
}
然后你调用代码就是整洁:
EventObserver.CreateObserver(eventProducer);