代码之家  ›  专栏  ›  技术社区  ›  Lee Goddard

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

  •  2
  • Lee Goddard  · 技术社区  · 6 年前

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

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

    这样编码有什么原因吗?

    2 回复  |  直到 5 年前
        1
  •  1
  •   Matt Timmermans    5 年前

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

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

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

        2
  •  0
  •   jaco0646    6 年前

    这是反模式吗?

    它有名字吗?

    是: callback function

    这样编码有什么原因吗?

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

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