Adapter模式在J2SE事件处理中的应用
1.Adapter模式理论
Adapter模式又称变压器模式,关于该模式的基本概念请参考其他书籍或资料;这里我们只粗略讨论该模式两大实现方法的区别:基于类的Adapter模式和基于对象的Adapter模式。
基于类的Adapter模式的一般结构如下:Adaptee类为Adapter的父类,Adaptee类为适配源,适配目标(接口)也是Adapter的父类;基于类的Adapter模式比较适合应用于Adapter想修改Adaptee的部分方法的情况。基于对象的Adapter模式的一般结构如下:Adaptee类对象为Adapter所依赖,适配目标(接口)是Adapter的父类;基于对象的Adapter模式比较适合应用于Adapter想为Adaptee添加新的方法的情况。但在Adaptee类的方法与Adapter类的方法不同名而实现相同功能的情况下,我们一般也使用基于对象的Adapter模式,在J2SE事件处理中,我们就大量使用了基于对象的Adapter模式。
2.J2SE中的事件处理
J2SE中的事件处理代码示例如下:
public class WebFormDesigner extends JFrame {
?? void jbInit() throws Exception {
text.addActionListener(new WebFormDesigner_text_actionAdapter(this));
}
void text_actionPerformed(ActionEvent e) {
??? TextDialog createText = new TextDialog();
??? createText.setVisible(true);
??? createText.setTitle("TEXT");
??? createText.setBounds(100, 100, 500, 300);
??? createText.setModal(true);
??? createText.show();
? }
}
class WebFormDesigner_text_actionAdapter implements java.awt.event.ActionListener {
? WebFormDesigner adaptee;
? WebFormDesigner_text_actionAdapter(WebFormDesigner adaptee) {
??? this.adaptee = adaptee;
? }
? public void actionPerformed(ActionEvent e) {
??? adaptee.text_actionPerformed(e);
? }
}
在实际编程时,text_actionPerformed方法由程序员自己实现(弹出新的对话框),而WebFormDesigner_text_actionAdapter类是由开发环境依据基于对象的Adapter模式自动生成的。
3.Adapter模式与代码分析
由上面的分析可见,WebFormDesigner在本例中是Adaptee, WebFormDesigner_text_actionAdapter在本例中是Adapter, java.awt.event.ActionListener在本例中是适配目标。
适配目标为一接口,代码如下:
public interface ActionListener extends EventListener {
??? /**
?? ??* Invoked when an action occurs.
???? */
??? public void actionPerformed(ActionEvent e);
}
适配目标中只有一个方法:actionPerformed()。由于WebFormDesigner_text_actionAdapter 实现了java.awt.event.ActionListener,所以要求实现actionPerformed()方法。WebFormDesigner_text_actionAdapter实现actionPerformed()方法是引用了WebFormDesigner这个adaptee而完成的。从代码中可以看出,WebFormDesigner是WebFormDesigner_text_actionAdapter的方法的参数,所以WebFormDesigner_text_actionAdapter依赖WebFormDesigner。
Adaptee类(WebFormDesigner)的方法(text_actionPerformed)与Adapter类(WebFormDesigner_text_actionAdapte)的方法(actionPerformed)不同名而实现相同功能,这就是我们上面分析的基于对象的Adapter模式。
?
hongbo781202,又名HongSoft,职业程序员,研究领域:1)基于工作流的BPM系统研究2)基于JAVA的信息安全
技术.欢迎和大家讨论JAVA相关各方面技术和市场问题 hongbosoftware@163.com
?<!----><o:p></o:p>
分享到:
相关推荐
J2SE中表格应用,一个JTable的例子。
J2SE桌面应用开发 J2SE桌面应用开发J2SE桌面应用开发 J2SE桌面应用开发 J2SE桌面应用开发
j2se1.5中文api
关于J2SE图像处理的例子,对图像进行打开、尺度变换、旋转90、180、360度、进行灰处理。
j2se中文api.rar
j2se1.6官方中文API 官方网站下载,一共三部分
j2se中文6.0apij2se中文6.0api
基于J2SE数字图像处理设计及报告 doc
j2se6.0中文API 自己用的挺好的
j2se中文API,详细介绍基础的类以及方法
j2se doc 中文版 j2se doc 中文版 j2se doc 中文版 j2se doc 中文版
J2SE_API、J2SE_API、J2SE_API、J2SE_API、J2SE_API、J2SE_API、J2SE_API
J2SE 中文帮助文档 很适合初学使用 这只是一部分 因为比较大 所以把 javax 分出来了 可继续下Javax 解压放在j2se\html\zh_CN\api里
这个是j2se的一个中文API,以前也从网上下载了一些j2se的中文api,但都感觉不够人性,后来终于发现了一本,分享下,这个自我感觉很人性,操作用起来特别舒服! 注意:我的上传文件只有15MB,我把它整成了4个包,现在...
本文档是 JavaTM Platform Standard Edition 6 的 API 规范。
j2se程序在MyEclipse下使用j2se程序在MyEclipse下使用j2se程序在MyEclipse下使用j2se程序在MyEclipse下使用j2se程序在MyEclipse下使用
J2SE基础知识大全 J2SE基础知识大全 J2SE基础知识大全
j2se 小程序源代码
Java 6的API文档,绝对中文的。 虽然j2se很是没落,, 但个别场景还是用的到,送给分少的你
J2SE基本上是Java开发人员必学的基础技能之一,对于J2SE需要经常查询提供类库的使用方法。这里提供了中文版本的J2SE API速查手册,方便开发人员的查询和学习