【问题标题】:Events or abstract methods, best practices事件或抽象方法、最佳实践
【发布时间】:2009-12-28 23:11:48
【问题描述】:

子类需要知道其超类何时发生特定事件,但超类有不止一种方法来发布消息。这里有 2 个:

  • 调度事件
  • 调用子类最终可以覆盖的抽象方法

我想知道最佳实践是否会推荐其中一种方法而不是另一种。

附:当我想到这个问题时,我正在使用 ActionScript。

【问题讨论】:

  • 看起来您正在使用特定的语言或开发环境,因为您在“事件”和“方法”之间创建了二分法。请说出它是什么,以便人们可以给你更好的答案。

标签: oop coding-style class-design


【解决方案1】:

这取决于您要解决的问题的性质。子类的处理需要异步吗?如果是这样,那就是支持基于事件的设计的论据。不属于你的类的东西是否想知道它?这是支持基于事件的设计的另一个论据。除此之外,提供一个抽象方法作为你的逻辑的钩子可能是最简单的,因为这是很多(根据我的经验)程序员所期望的。

【讨论】:

  • 优秀的积分!在我的问题的背景下,这两个问题的答案是否定的。我想我会使用钩子方法。
【解决方案2】:

这里没有“最好”的方法,两者都有不同的语义,我将在这里概述。

覆盖方法:

  • 比委托更快
  • 强制子类覆盖(抽象方法)
  • 只调用子类方法,不调用父类
  • ->当你想改变一个类的行为时使用方法覆盖

活动:

  • 注册多个事件处理程序而不是一个
  • 简单的异步操作
  • -> 当您想补充/扩展类的行为时使用事件

【讨论】:

    【解决方案3】:

    OOP 就是对象向对象发送消息。最好的方法是定义一个方法并覆盖它。

    当然,你提出了错误的二分法:当你调度一个事件时,它最终会调用类的某个方法,而这些方法可能会被覆盖。

    【讨论】:

      【解决方案4】:

      抽象的方法是最好的。随着事件的发生,您引入了不必要的复杂性。

      【讨论】:

        猜你喜欢
        • 2010-10-29
        • 1970-01-01
        • 1970-01-01
        • 2021-01-31
        • 2017-12-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多