1

いくつかのグラフとテーブルを含むアプリケーションがあります。

私はすばやく作業し、次のようなクラスを作成GraphTable、それぞれにリクエスト オブジェクト (疑似コード) を含めました。

class Graph {
  private request;

  public function setDateRange(dateRange) {
    request.setDateRange(dateRange);
  }
  public function refresh() {
    request.getData(function() {
      //refresh the display
    });
  }
}

GUI イベント (たとえば、誰かが日付範囲のドロップダウンを変更した場合) が発生するGraphと、インスタンスのセッターを呼び出して更新します。さて、テーブルなどの他の GUI 要素を追加したとき、それらはすべて基本的に同様のメソッド (setDateRangeおよび要求に共通するその他のもの) を持っていました。

これを行うためのよりエレガントなOOPの方法は何ですか?

アプリケーションは非常にシンプルで、過度に設計したくありませんが、要求オブジェクトにルーティングするだけの基本的に同じメソッドを持つクラスの束も持ちたくありません。また、各 GUI クラスをリクエスト クラスから継承するように設定したくはありませんが、どんなアイデアも受け入れることができます。

4

1 に答える 1

3

あなたがコメントしたように、方法は同じです。その場合、次のアプローチをお勧めします。

abstract class AbstractGUIElement {

    protected request;

    public function setDateRange(dateRange) {
        request.setDateRange(dateRange);
    }

    abstract function refresh();
}

更新はおそらく要素固有であるため、継承する型が実装する必要がある抽象メソッドとして追加しました。

class Graph extends AbstractGUIElement {

    public function refresh() {
        // Graph specific refreshing
    }
}
于 2012-10-25T23:11:29.550 に答える