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 回答