站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2SE 专题Adapter模式在J2SE事件处理中的应用

Adapter模式在J2SE事件处理中的应用

摘要: Adapter模式在J2SE事件处理中的应用

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

?<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />




↑返回目录
前一篇: j2ee、j2se、ejb、javabean、serverlet、jsp之间关系
后一篇: [J2SE 1.5]逐渐挖掘Autoboxing/Auto-Unboxing