用swing做界面,一个JFrame界面,点击界面中的按钮实现业务。
比如 按下 “点单”,界面中出现类别信息。
第一种方法:这个事件单独写成一类,放在另外的包下,比如com,xxx.swing.listener下,添加监听器的时候,传需要的参数进去,因为有界面相应,所以参数可能有点多,有可能有五六个
import com,xxx.swing.listener
btnOrder.addActionListener(new OrderListener(Jpanel OrderPanel, Order order)) ;
按照我对MVC的理解,这样是将View 和Control 分开,但是我看到的都是直接像下面这样写的(目前正在做的项目,刚毕业,项目经验不是很多)
第二种:
btnOrder.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
onOrderClassButtonClicked(vcTemp);
// 有时候业务比较复杂,这里可能会有几百行代码,或者是将这几百行代码都封装在一个函数里面,
// 直接调用这个函数
}
});
有时候因为业务代码少,这样写不觉得有什么,但是业务比较多的时候,很多的actionListener,这个类变得很长,甚至几千行,我现在的项目就是这样,目前正在修改。
觉得这种方式不怎么好,界面和业务混在一起,有问题要改的话,找起来也麻烦,有新人加入来的时候,看代码,理解起来很吃力。
求教,如何实现Swing MVC的分离???
我说的两种方法,大家用的都是那种???
有经验的大神求分享方法!!!
------解决思路----------------------
看长度以及将来的修改预期来决定是否需要独立出来作为一个类。。
往往面临修改风险的类是需要独立出来的,反而那些写好以后就不会去动的类长一点也不太要紧。(当然把几千行代码放在一个listener中还是有点夸张,按我理解这应该是一个业务功能或者特定算法吧,能独立出来也是极好的,当然这样的东西能不动也可以不动,当你觉得它将来被修改的可能性不大,或是它与外部方法结合特别紧密)