锁定老帖子 主题:Patterns of Action
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2006-11-30
Action 模式
写了很长时间的Swing 程序,总结了一些Action 使用方面的模式与大家共享一下。 1、Sensitive Action Pattern 写过Swing 程序的人都知道,根据用户选择的对象来控制某些Action 的状态(Enable/Disable)是比较繁琐的一件事情,通常我们需要监听控件的选择事件,然后再获取到Action的实例,再根据不同的条件来改变它的状态,代码中到处充满了if...else...这些过程性的代码,而且有时为了获取到Action 的实例,还要做很多特殊的处理。 Sensitive Action 模式是我在编写代码时想出的,主要的目的是让代码变得更加简洁,尽量避免重复的代码。接口层的结构图如下: 接口图 上图中各成员的说明如下: SensitiveAction:该接口定义了selectionChanged 方法,当用户选择对象发生变化时,可以通过该方法通知本Action, InstanceProvider:该接口定义了一些方法用户获取用户选中的实例。 除了上面定义的接口以外,还有一些帮助类如下:
这些ActionHelper 类主要负责监听事件,然后通知所有被加入的SensitiveAction。 具体应用时的代码如下: java 代码
2、Alternative Action Pattern 该模式是基于上面的SensitiveAction 模式的,我在开发的经常会遇到一些互斥的Action,例如:Lock/Unlock,Activate/Deactivate 等等。这些Action 同时只能出现一个,AlternativeAction 的代码实现如下: java 代码
3、Safe Action 在Action 的actionPerformed 方法中经常会出现一些 RuntimeException,这些异常如果不被捕捉,就会出现用户点击了一个菜单或按钮后没有任何反应;有时候,我们也需要在actionPerformed 方法中处理一些业务相关的Exception,例如:用户去删除一个用户组下有用户的用户组时,系统应该弹出相应的警告对话框。像这类的问题如果让每个Action 自己去处理会出现很多重复的代码,应该只需要一个类去处理这类问题,然后所有的Action 从该中继承就可以了,代码如下: java 代码
该类定义了一个模板方法performed 方法,子类应该在该方法中编写Action 的执行代码。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2006-12-02
怎么没人关注呀?
|
|
返回顶楼 | |
发表时间:2006-12-02
不会吧,Swing 那么经典,怎么没人学呀?
|
|
返回顶楼 | |
发表时间:2006-12-02
wangyonghe 写道 不会吧,Swing 那么经典,怎么没人学呀?
那你觉得用java开发web的多,还是swing的多啊? 是有人学swing的;但一般的都用java开发web,去搞swing相对来说比较少的. btw:文章写不错... |
|
返回顶楼 | |
发表时间:2006-12-03
如果学习设计模式,Swing 还是挺不错的范例呀???
|
|
返回顶楼 | |
发表时间:2006-12-04
今天补充了一个SafeAction 模式,在以后的时间里我会补充更多有关Action 的模式,
其实,模式本身并不是针对某个语言或者某个平台的,我使用Swing 来描述Action 相关的模式只是一种描述的手段而已,在Web 中这些模式同样可以适用。只不过我已经有好几年没做Web 了,都忘得差不多了,所以还是使用我最擅长的方式的描述更加准确一点。 |
|
返回顶楼 | |
发表时间:2006-12-04
总感觉用java开发桌面程序不是太爽!
不过计划帮同学写个小程序,打算用用Swing,正学习! 同时打算用db4o做数据库! 效率和部署,这是让人不想用java的原因! |
|
返回顶楼 | |
发表时间:2006-12-17
我们公司做swing的真的也没有几个,去51job上,招java的大多是做web的
|
|
返回顶楼 | |
发表时间:2007-01-05
写的还是很好的,对于设计模式而言,有自己的理解,这是最重要的。
其实action模式在web应用中是最基本的东西,目前来说是放置四海而皆准的东西了。很多的处理都用action来驱动,去触发相应的操作,非常的方便易懂。 |
|
返回顶楼 | |
浏览 6345 次