我目前正在用Java编程21点应用程序,它需要写在MVC架构中。我有我的所有模型,视图和控制器完全编码,一切都完美。然而,我想知道将听众附加到组件上的最佳方式是什么(例如JButton)。在MVC体系结构中公开诸如JButton等Java组件的最佳方式是什么?
我当前的设计声明视图中需要侦听器作为公共final的所有组件。然后它将视图传递给控制器。从那里,控制器可以完全访问组件并添加动作侦听器。代码示例:
public class View extends JFrame {
public final JButton myBtn1 = new JButton("Button 1");
public final JButton myBtn2 = new JButton("Button 2");
public View() {
//constructor code here....
}
}
public class Controller {
private Model myModel;
private View myView;
public Controller(Model m, View v) {
myModel = m;
myView = v;
//now add listeners to components...
myView.myBtn1.addActionListener(new MyActionListener1());
myView.myBtn2.addActionListener(new MyActionListener2());
}
}
然而,我的一个朋友宣布他所有JButton的私人范围,然后做出视野中的公共方法来添加动作侦听到它们各自的部件。对我来说,这只是浪费时间,只会增加不必要的代码。代码示例:
public class View extends JFrame {
private JButton myBtn1 = new JButton("Button 1");
private JButton myBtn2 = new JButton("Button 2");
public View() {
//constructor code here....
}
public void myBtn1AddActionListener(ActionListener a) {
myBtn1.addActionListener(a);
}
public void myBtn2AddActionListener(ActionListener a) {
myBtn2.addActionListener(a);
}
//etc etc...
}
public class Controller {
private Model myModel;
private View myView;
public Controller(Model m, View v) {
myModel = m;
myView = v;
//now add listeners to components...
myView.myBtn1AddActionListener(new MyActionListener1());
myView.myBtn2AddActionListener(new MyActionListener2());
}
}
那么,考虑到上述两种情况,哪种方式更好?
谢谢。
'需要写入MVC架构'?如果这是一个家庭作业/课程作业的问题,在这里很好,但它标记为家庭作业,所以人们知道建议你/让你觉得,而不仅仅是为你做;) – ChrisW 2012-04-23 17:54:27
哈哈,好吧,我不是要求人们为我做 - 如我所说,它工作得很好。这只是一个'最佳实践'的问题,真的...... :-) – tjramage 2012-04-23 18:08:45