一个简单Swing程序的架构

来源:互联网 发布:淘宝商城丰胸精油 编辑:程序博客网 时间:2024/05/29 16:27

Java Swing程序不像J2EE程序那样有框架有模式可遵,反倒显得很自由无所拘束,但如些一来反而显得程序代码杂乱无章,如果只是写个示例程序的话倒也无所谓,但随着代码的增多或过段时间在回首时就发现代码很不容易看懂,不以维护。我虽无大型Swing程序的经验,但平素喜爱用Swing写写工具程序以练练手,因此我以下是我的经验总结。下面以些图来表示

一个桌面级程序必然是以一个主界面展开的,在Swing中这个主界面是派生自JFrame的,其中有菜单、工具栏、状态栏、内容面板(contentPanel)和一些相应的按钮,这些界面元素即可以派生自某个类或调用Swing的现成类,但最后总要添加到界面中,而为了与用户交互,控件要和一个实现了Action接口的类绑定,因此在界面层中我分别实例化了ActionsManager和Functions对象,我专门写了一个ActionsManager类的用以管理程序中所有的Action接口的类,通过键值对集合把某个控件的动作与相应的控件绑定,当然你可能会觉得这很无聊,还不如在构造控件时直接将动作与之绑定就可以了,但这样做时很没有重复性,如果某个动作即要被按钮实现又要被菜单实现,还要被工具栏实现的话就要重复写三次代码,如果还要考虑其禁用与否就更麻烦了,因此我干脆将动作类统统封装在一个集合中统一调用,比如如下的代码

然后在所有的控件容器类中实现相关的功能,让ActionsManager类的相应Action接口类来调用即可,而将界表示层和业务逻辑层分离已是众所皆知的道理,因此在ActionsManager内的主界面对象实例可以访问界面的UI Manager方法集,由UI Manager再调用相应的业务逻辑层,即Functions内的方法,并把结果返回至UI Manager,以此来实现动作层、表示层和业务层的简单框架。