带有Java Swing的MVC模式 [英] MVC pattern with java Swing
问题描述
我有一个使用MVC模式开发Java Swing应用程序的想法.我已经在下面描述了我的想法,请告诉我,这是对Java Swing使用MVC模式的正确方法吗?
I have an Idea to develop a java Swing application using the MVC pattern. I have described my idea below and please let me know that, is this a correct way of using the MVC pattern for java Swing?
- 这是视图
以下方法用于获取和设置以上视图的名称,
following methods are used to get and set the name of the above view,
//at top of the view its model and controller is defined as
Model model = null;
Controller controller = null;
//constructor
public view(){
this.model = new Model();
this.controller = new Controller(this, model);//controller takes view and model as its parameters.
}
public void v_addShowNameButtonsActionListener(ActionListener al){
btnActionListener.addActionListener(al);
}
public String v_getName(){
return txtName.getText();// txtName is the name of the text field.
}
public void v_setName(String name){
txtName.setText(name);
}
- 这是控制者
/*at the top of the controller define the view and model*/
View view = null;
Model model = null;
/* constructor of the controller*/
public Constructor(View view, Model model){
this.view = view;
this.model = model;
}
class CreateShowNameButtonsActionListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
Connection con = null;
try{
con = ******************** /*get the data base connection*/
view.setName(model.m_getName(con));
}catch(Exception ex){
ex.printStackTrace();
}finally{
con.close();
}
}
}
- 这是模型
Public class Model{
public String m_getName(Connection con){
String name;
name = ******* //do database queries and set get the name form the database
return name;
}
}
我已经简要描述了我将在Java Swing中实现MVC模式的方式.
I have briefly described the way I am going to implement the MVC pattern in java Swing.
推荐答案
我可能要做的更改是在模型中进行所有与数据库相关的操作,即甚至管理我自己的数据库连接.这将使Controller
类完全独立于在何处以及如何获取数据.
A change I would make maybe would be to do all database related operations within the model, that is, even managing my own database connections. This will allow the Controller
class to be completely independent from the where and the how you get the data.
Controller
需要知道的是,它需要调用Model
以获得最终传递给View
所需的任何信息.
All that the Controller
needs to know is that it needs to call the Model
to get whatever information it needs to eventually pass on to the View
.
还有一点需要注意,通常最好在Controller
和Model
之间实现一个额外的层,称为Service
层.当您还需要通过其他方式(例如REST)公开某些类似功能时,此通常会派上用场.这将允许您在Model
层中编写所有查询,然后,将在Service
层中进行任何其他自定义.这将允许Controller
和REST API提供相同的功能,而不会造成Model
层混乱,或者在Controller
和REST API中具有重复的代码.
As an extra note as well, it is usually a good idea to implement an extra layer between the Controller
and the Model
, known as a Service
layer. This usually comes in handy when you also need to expose certain similar functionality through other means, such as REST. This will allow you to write all your queries in the Model
layer, then, any extra customization will be done within the Service
layer. This will allow the Controller
and REST API to deliver the same functionality without either cluttering the Model
layer or else have duplicate code in the Controller
and REST API.
这篇关于带有Java Swing的MVC模式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!