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

问题描述 投票:2回答:2

对象需要使用一个对象进行实例化,在该对象上可以调用一个方法来注册而不是事件发生 - 而不是实例化代码侦听事件。

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

是否有理由以这种方式编码?

design-patterns anti-patterns
2个回答
1
投票

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

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

但是如果传入的对象实际上是一个事件监听器,那么它就变成了一个坏主意。注入事件监听器不是“依赖注入”,因为对象不依赖于其事件监听器,因此它的构造函数中不应该要求任何对象。限制事件生成对象以使其只能有一个侦听器也是非常糟糕的形式。


-1
投票

这是反模式吗?

没有

它有名字吗?

是的:callback function

是否有理由以这种方式编码?

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

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

© www.soinside.com 2019 - 2024. All rights reserved.