1

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

我有一个类,比如说EventConsumer,它需要监听其他对象事件,比如说EventProducer,(准确地说是.NetForm事件)并做出适当的反应,所以它的构造函数参数之一就是那个对象(public EventConsumer(EventProducer producer, ...))。在构造函数中,我订阅了生产者的事件,仅此而已。我真的不需要继续参考消费者。当事件生产者也将被垃圾收集时。

那么,在代码中有这么奇怪的行看起来什么都不做,这可以吗?例如。:

new EventObserver(eventConsumer, config);

这是正确的做法吗?这不是有点奇怪吗?

4

1 回答 1

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);
于 2013-04-26T07:58:22.233 回答