服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

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模式。

扫描关注微信公众号