当前位置: 代码迷 >> J2SE >> swing MVC的分开
  详细解决方案

swing MVC的分开

热度:101   发布时间:2016-04-23 19:39:58.0
swing MVC的分离
用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的分离???
我说的两种方法,大家用的都是那种???
有经验的大神求分享方法!!!
------解决思路----------------------
引用:
Quote: 引用:

如果你想实现类似j2ee那样的mvc分离,必须做的一点就是动态绑定。在j2se中比较简单的实现方式是利用消息机制实现动态绑定,在设计模式里面这个叫做观察者模式(可能也叫订阅-发布)。每个按钮被按下时应该发出不同的消息,控制逻辑的类作为观察者接收这些消息,并作出特定的动作。这样做的好处是可以在不影响业务逻辑的情况下更换界面,坏处是需要好好管理消息的名称和意义。

另。数据应该与界面分离;界面的刷新需要从其他的地方获得数据(类似数据库,可以实现成一个简单的类)。

其实mvc能减少的复杂度比较有限,想让项目更简单、可靠、可维护,还得多用面向对象思想(它的一个典型应用就是设计模式)。


每个业务都是分开的啊,很多的按钮,业务和按钮是一对一的关系,不是一对多。
我说的那两个方法,你觉得用哪个好点呢??


看长度以及将来的修改预期来决定是否需要独立出来作为一个类。。

往往面临修改风险的类是需要独立出来的,反而那些写好以后就不会去动的类长一点也不太要紧。(当然把几千行代码放在一个listener中还是有点夸张,按我理解这应该是一个业务功能或者特定算法吧,能独立出来也是极好的,当然这样的东西能不动也可以不动,当你觉得它将来被修改的可能性不大,或是它与外部方法结合特别紧密)