2009-12-28 57 views
0

子類需要知道特定事件何時發生在其超類中,但超類有多種方式來破壞新聞。以下是2:事件或抽象方法,最佳實踐

  • 分派事件
  • 調用一個抽象方法,子類可能最終超越

我在想,如果最佳實踐建議的方法比其他之一。

P.S.當我想到這個問題時,我正在使用ActionScript。

+1

看起來您正在使用特定語言或開發環境,因爲您在「事件」和「方法」之間創建了二分法。請說出它是什麼,以便人們可以給你更好的答案。 – Andrew 2009-12-28 23:21:36

回答

2

這取決於你試圖解決的問題的性質。子類所做的處理是否需要異步?如果是這樣,那就是支持基於事件的設計的論據。你的班級中沒有子類的東西是否想知道它?這是支持基於事件的設計的另一個論據。除此之外,提供抽象方法可能是最容易的,它可以作爲邏輯的一個鉤子,因爲這是程序員期望的很多內容(大部分是我的經驗)。

+0

優秀點!在我的問題中,兩個問題的答案都是否定的。我想我會使用鉤子方法。 – 2009-12-28 23:34:35

0

OOP是關於向對象發送消息的對象。最好的方法是定義一個方法並覆蓋它。

當然,你提出了一個錯誤的二分法:當你派發一個事件時,它最終會調用一些可能被重寫的類的方法。

0

抽象的方法是最好的。隨着這個事件你正在引入不必要的複雜性

2

這裏沒有「最好」的方法,兩者都有不同的語義,我將在這裏概述。

重載方法:

  • 比代表更快速
  • 強制子類覆蓋(抽象方法)
  • 只有子類方法被調用,而不是父類
  • - >使用當您要更改類的行爲時覆蓋方法

活動:

  • 註冊多個事件處理程序,而不是一個
  • 易異步操作
  • - >使用事件時要補充/擴展類的行爲