Java中的待办事项列表应该使用哪种设计模式?
对于一个非常简单的面向对象todo列表,我应该使用哪种设计模式 起初,我从Task、TaskList和Driver类开始。还有一个简单的UI,显示任务标题列表。当添加新任务时,我正努力让UI更新列表,在尝试解决这个问题时,我意识到我的整个布局可能是错误的 我想找人给我一个基本的指导,或者是一个设计模式图的链接,其中有一些关于我的类如何与该图相关的指导Java中的待办事项列表应该使用哪种设计模式?,java,design-patterns,oop,Java,Design Patterns,Oop,对于一个非常简单的面向对象todo列表,我应该使用哪种设计模式 起初,我从Task、TaskList和Driver类开始。还有一个简单的UI,显示任务标题列表。当添加新任务时,我正努力让UI更新列表,在尝试解决这个问题时,我意识到我的整个布局可能是错误的 我想找人给我一个基本的指导,或者是一个设计模式图的链接,其中有一些关于我的类如何与该图相关的指导 谢谢。我想你想要观察者模式-但是看看前面的堆栈溢出问题我想你想要观察者模式-但是看看前面的堆栈溢出问题模型视图控制器(MVC)。基本上,模型存储任
谢谢。我想你想要观察者模式-但是看看前面的堆栈溢出问题我想你想要观察者模式-但是看看前面的堆栈溢出问题模型视图控制器(MVC)。基本上,模型存储任务,控制器处理事件,视图显示。您可以有多个视图,即一个用于在UI中显示任务,另一个用于保存到磁盘 模型视图控制器(MVC)。基本上,模型存储任务,控制器处理事件,视图显示。您可以有多个视图,即一个用于在UI中显示任务,另一个用于保存到磁盘 另一条建议:假设您在Swing中编写UI,不要使用
DefaultTableModel
并将Task
从任务列表中复制到模型中(即不要将数据保存在两个位置)。相反,子类AbstractTableModel
,并让它充当任务列表的薄包装器;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.
}
另一条建议:假设您在Swing中编写UI,不要使用DefaultTableModel
并将Task
中的Task
复制到模型中(即不要将数据保存在两个位置)。相反,子类AbstractTableModel
,并让它充当任务列表的薄包装器;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.
}
通用体系结构应该实现模型-视图-控制器(MVC)模式(或者模型-视图-演示器,具有更强的模型和视图解耦性),看起来,您已经开始这样做了。你有代表“任务”和“任务列表”的类,你有一个向用户展示任务列表(模型)的UI。现在,您需要为模型和ui提供一个接口(或一组接口),并希望确保模型不知道ui,ui也不知道模型
因为在这两者之间,您有presenter类,它将对模型更改和ui事件(观察者模式,数据绑定作为一种技术)作出反应。它可以监听模型并更新视图。因此,您希望使您的模型可见。它可以从视图中侦听事件(值编辑、操作)并将此信息传递给模型,因此它可以(尝试)适应用户预期的更改(模型和只有模型将验证用户输入并向演示者作出响应)
是的,很复杂。首先,将应用程序分为三个部分(模型、视图、控制器/演示者),并使模型可见。因此,您可以轻松地从模型更改时自动更新的视图开始。然后,一步一步地,您可以添加功能来对用户在UI上的输入做出反应。通用体系结构应该实现模型-视图-控制器(MVC)模式(或者模型-视图-演示器,具有更强的模型和视图解耦功能),看起来,您已经开始这样做了。你有代表“任务”和“任务列表”的类,你有一个向用户展示任务列表(模型)的UI。现在,您需要为模型和ui提供一个接口(或一组接口),并希望确保模型不知道ui,ui也不知道模型
因为在这两者之间,您有presenter类,它将对模型更改和ui事件(观察者模式,数据绑定作为一种技术)作出反应。它可以监听模型并更新视图。因此,您希望使您的模型可见。它可以从视图中侦听事件(值编辑、操作)并将此信息传递给模型,因此它可以(尝试)适应用户预期的更改(模型和只有模型将验证用户输入并向演示者作出响应)
是的,很复杂。首先,将应用程序分为三个部分(模型、视图、控制器/演示者),并使模型可见。因此,您可以轻松地从模型更改时自动更新的视图开始。然后,您可以一步一步地添加功能,以便对用户在UI上的输入做出反应。如果没有一些代码或图表,很难理解您的设计,但我会尝试一下
取决于您的具体情况,it列表是否在后端(数据库/控制器)中更新并反映在前端(View-html5,angularJs)中,或者反之亦然,或者它可能发生在或您希望应用修复的位置(前端/后端)考虑应用FIX时的所有交互。< /P>
在前端可能的方法中
Ajax(数据从前端到后端来回流动)
AngularJSUse可以使用promise或简单的$http,或者像ng repeate这样简单的东西
HTML5-具有动态dataListControl之类的功能
在后端可能的方法中
观察者模式
整个体系结构您可以将其扩展到事件驱动的体系结构
因为你觉得你的设计从一开始就错了
由于您正在寻找基本方向,这可能会有所帮助
有效-Java-2nd-Joshua-Bloch
首屈一指的书
2美分-使用一些框架,如果你开始设计之旅,它们会让生活变得更轻松。
使用框架——比如说,SPRING强制您使用许多模式