Java MVC模型视图Dao分离
我想优化我的Java编程代码,以更好地分离模型和视图 目前,我有代表视图的面板和代表模型的POJO和DAO 是否可以将模型组件从视图面板中分离出来Java MVC模型视图Dao分离,java,swing,model-view-controller,Java,Swing,Model View Controller,我想优化我的Java编程代码,以更好地分离模型和视图 目前,我有代表视图的面板和代表模型的POJO和DAO 是否可以将模型组件从视图面板中分离出来 // Panel User class UserPanel extends JPanel{ DaoUser daoUser = new DaoUser; User user = daoUser.findUser(current_id); JTextField tf = new JTextField(); tf.setText(
// Panel User
class UserPanel extends JPanel{
DaoUser daoUser = new DaoUser;
User user = daoUser.findUser(current_id);
JTextField tf = new JTextField();
tf.setText(user.getName());
}
//POJO User
class User{
int id;
String name;
Getters and Setters ..
}
// Dao User
class DaoUser{
public void saveUser(User user)
public User findUsers();
public List<User> listUsers()
}
//面板用户
类UserPanel扩展了JPanel{
DaoUser DaoUser=新DaoUser;
User User=daoUser.findUser(当前_id);
JTextField=新的JTextField();
tf.setText(user.getName());
}
//POJO用户
类用户{
int-id;
字符串名;
能手和二传手。。
}
//Dao用户
类用户{
公共void saveUser(用户)
公共用户findUsers();
公共列表listUsers()
}
如果我是你,我会这样做:
class DaoUser extends Observable {
//other methods
public User findUsers (int id_user) {
//find your user. Once you find it
setChanged();
notifyObservers(user_found);
}
}
在您看来,您应该:
class UserPanel extends JPanel implements Observer {
tf = new JTextField();
}
@Override
public void update(Observable o, Object ob) {
User u=(User) ob;
tf.setText(u.getName());
}
我希望这可以通过添加管理器/控制器层来帮助您是的。顺便说一句,DaoUser的更好名称应该是UserDAO。“是否可以将模型组件DaoUser从视图面板中分离出来?”-是的。只需将
DoaUser
的实例传递给UserPanel
,而不是创建它的实例。此外,你真的应该在类上使用接口来描述预期的行为。使用建议的观察者模式之一。。。MVC模式允许您在模型更改时更新视图。。。在这种情况下,你的变化是什么??