我应该在Java中使用哪种设计模式用于TODO列表?

时间:2009-09-18 05:13:12

标签: java design-patterns oop

我应该将哪种设计模式用于非常简单的面向对象的待办事项列表?

最初,我开始使用Task,TaskList,Driver的类。还有一个显示任务标题列表的简单UI。当添加新任务时,我很难让UI更新列表,并且在尝试解决这个问题时,我意识到我的整个布局可能是错误的。

我正在寻找某人给我一个基本方向,或者可能是设计模式图的链接,并对我的类与图表的关系提供一些指导。

感谢。

5 个答案:

答案 0 :(得分:2)

另一条建议:假设您在Swing中编写用户界面,不要使用DefaultTableModel并将Task中的TaskList复制到模型(即不要将数据保存在两个地方)。相反,子类AbstractTableModel并使其充当TaskList周围的薄包装器; e.g。

public class TaskTableModel extends AbstractTableModel {
  private final TaskList taskList;  

  public TaskTableModel(TaskList taskList) {
    this.taskList = taskList;
  }

  public Object getValueAt(int row, int column) {
    Task task = taskList.getTask(row);
    Object ret;

    switch(column) {
      case 0:
        ret = task.getStartTime();
        break;
      case 1:
        ret = task.getState();
        break;
        // etc ...
    }

    return ret;
  }

  // TODO: Implement other TableModel methods.
}

答案 1 :(得分:1)

我认为你想要观察者模式 - 但看一下之前的堆栈溢出问题Should I use a Listener or Observer?

答案 2 :(得分:1)

模型 - 视图 - 控制器(MVC)。基本上,Model存储任务,Controller处理事件和查看显示。您可以拥有多个视图,即一个用于在UI中显示任务,另一个用于保存到磁盘。

答案 3 :(得分:1)

通用架构应该实现模型 - 视图 - 控制器(MVC)模式(或模型 - 视图 - 展示器,模型和视图的更强解耦),它看起来就像你已经开始那样。您有代表“任务”和“任务列表”的类,并且您有一个UI来向用户显示任务列表(模型)。现在你需要一个模型和ui的接口(或一组接口),你要确保模型不知道ui,ui不知道模型。

因为在两者之间,你有演示者类,它会对模型变化和ui事件作出反应(观察者模式,数据绑定作为一种技术)。它可以监听模型并更新视图。所以你想让你的模型可观察。它可以从视图中监听事件(值编辑,操作)并将此信息传递给模型,因此它可以(尝试)适应用户预期的更改(模型,只有模型将验证用户输入并给出对演示者的回应。)

是的,这很复杂。首先,将应用程序分解为三个部分(模型,视图,控制器/演示者)并使模型可观察。因此,您可以使用在模型更改时自动更新的视图轻松启动。然后,您可以逐步添加功能以对UI上的用户输入做出反应。

答案 4 :(得分:-1)

如果没有一些代码或图表,很难理解你的设计,但我会试一试

取决于您的具体情况,是后端(数据库/控制器)中的更新列表,并反映在前端(View-html5,angularJs)或反之亦然,或者它可以在的任何一个地方发生,你想要应用修复(前端/后端)考虑应用修复时的所有交互。

在前端可能的方法中

  1. Ajax(数据从前端到后端来回流动)
  2. Angular js使用可以使用promise或简单的$ http,或者像ng-repeate这样简单的东西。
  3. HTML5 - 拥有动态dataListControl
  4. 在后端可能的方法中

    1. 观察者模式
    2. 整个架构,你可以走到事件驱动的架构https://martinfowler.com/articles/201701-event-driven.html 因为你觉得你的设计从头开始是错误的。
    3. 由于您正在寻找可能有帮助的基本方向

      1. https://martinfowler.com/aboutMe.html
      2. 有效的Java-第二-约书亚-布洛赫
      3. Head First Books
      4. 2美分 - 使用一些框架,如果您开始设计之旅,它们会让生活更轻松。

        使用框架让我们说SPRING迫使你使用许多模式,而你甚至不知道它们,如MVC,Front Controller,AOP,Singleton(bean),Template(JDBC,JpaTemplate)等。

        快乐设计直到那时:)