仅创建对象以订阅其他对象的事件

时间:2013-03-22 12:00:57

标签: c# oop events event-handling

我相信我的问题不是针对特定语言的。

我有一个班级,比如说EventConsumer,需要听别人的对象事件,比如EventProducer,(准确地说.Net Form事件)并做出适当的反应,所以其中一个构造函数参数是该对象(public EventConsumer(EventProducer producer, ...))。在构造函数中,我订阅了生产者的事件,这几乎就是它。我真的不需要继续引用消费者。当事件生产者也是垃圾收集时。

所以可以在代码中看到如此奇怪的一行,看起来什么也没做?例如:

new EventObserver(eventConsumer, config);

这是一种正确的方法吗?这不是有点奇怪吗?

1 个答案:

答案 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);