用于在实例化时提供的对象成员上触发事件的反模式名称?

Anti-pattern name for firing events on an object member supplied at instantiation?

一个对象需要用一个对象来实例化它,它可以调用一个方法来注册而不是一个事件已经发生——而不是实例化代码侦听事件。

这是反模式吗?如果有,它有名字吗?

有理由这样编码吗?

Is this an anti-pattern?

没有

does it have a name?

是:callback function

Is there a reason to code this way?

当然,请参阅:How to explain callbacks in plain english?

请注意,构造函数也是一种方法。将回调传递给构造函数与任何其他方法没有本质上的不同。

将待调用对象传递给构造函数通常用于"constructor injection"类型的依赖注入。参见:https://en.wikipedia.org/wiki/Dependency_injection#Constructor_injection

以这种方式使用时,它是一个很好的模式...

但是如果传入的对象真的是事件侦听器,那么这就不是个好主意了。注入事件侦听器不是 "dependency injection",因为对象不 依赖 其事件侦听器,因此它不应该在其构造函数中要求任何事件侦听器。限制事件生成对象使其只能有一个侦听器也是一种非常糟糕的形式。