2

コードの大部分がコールバックを中心に構築されていることに気付きました。これは「設計上の欠陥」と見なされますか? 従うべきより良い設計パターンはありますか?

4

6 に答える 6

7

オブザーバー パターンは、コールバックと同様に使用できるものと見なすことができると思います。それらをチェックアウトしましたか?

Pragmatic Programmerという本の中で、彼らは飛行機に搭乗するのを待っている人の例に言及しています。その人がチェックイン デスクに搭乗しても大丈夫かどうかを絶えず尋ねる (投票) 代わりに、チェックイン デスクは、フライトの準備ができたら、関心のあるすべての人に公に発表します。

この例の疑似コードは次のようになります。

class Clerk implements CheckInNotifyer {
  BunchOfObservers observers = new Bunch();

  public void addObserver(CheckInObserver observer) {
    observers.add(observer);
  }

  private void notifyListeners() {
    observers.all.notifyCheckIn(new CheckInEvent());
  }
}

class Passenger implements CheckInObserver {
  public void notifyCheckIn(CheckInEvent event) {
    event.getPlane().board();
  }
}

class WaitingArea {
  public init() {
    Passenger passenger = new Passenger();
    Clerk clerk = new Clerk();

    clerk.addObserver(passenger);
  }
}
于 2009-02-26T17:35:57.440 に答える
-1

オブジェクト指向言語では、コールバックによって提供される機能を実現するために、ポリモーフィズムがはるかに「クリーン」(キャストや面倒な関数型宣言がない) であり、よりオブジェクト指向のメソッド (インターフェイスから派生) であることがわかります。

于 2009-03-01T11:05:43.173 に答える