我使用PropertyChageSupport
和PropertyChageListener
使用Swing为Java SE实现了MVC模式。实现的MVC的图表如下。
在View
的实施中,我在Model
的帮助下在Controller
进行了财产更改。
View
包含以下代码,如Ok按钮。
btnOk.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
modelController.setNumber(Integer.parseInt(numberField
.getText()));
modelController.setName(nameField.getText());
}
});
完整代码可在SwingMVC。
中找到现在,我的问题是,我是否在btnOk
中为View
编写了上述代码,或者我应该在Controller
中的方法中编写代码,以便在View
,我会做的
btnOk.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
modelController.btnOkActionPerformed();
}
});
在以上两种实现中,哪种是实现MVC的首选方式?
答案 0 :(得分:4)
首先要注意的是:我不是专业人士或学生,而是一个嗜好的人,但话虽如此,我自己的偏好是你的第二个例子,
btnOk.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
modelController.btnOkActionPerformed();
}
});
控件必须调用视图上的方法来提取信息,并且它将调用的任何方法都将是视图实现的接口的一部分。我的目标是尽可能保持视野愚蠢,并做几乎任何事情以尽可能地放松耦合。
答案 1 :(得分:4)
您的图表显示了model–view–presenter(MVP)模式,该模式与Swing application design兼容。在此上下文中,Action
是封装应用程序功能以便从模型导出的便捷方式。具体的例子: