当前页面: 开发资料首页 → Java 专题 → Adapter在J2SE事件处理中的应用
Adapter在J2SE事件处理中的应用
摘要: Adapter模式又称变压器模式,关于该模式的基本概念请参考其他书籍或资料;这里我们只粗略讨论该模式两大实现方法的区别
<table cellSpacing=0 cellPadding=5 width=570 bgColor=#fbe392 border=0>
<tr>
<td>
<table cellSpacing=0 cellPadding=5 width=570 border=0>
<tr>
<td align=middle width=200 bgColor=#e1b004>天极IT资讯短信服务 电脑小技巧
<table cellSpacing=0 cellPadding=3 width="100%" bgColor=#fffcc0 border=0> function check4() { if (dn.mobile.value.length!=11) { alert("手机号码不正确!"); dn.mobile.focus(); return false; } return true; }
<form name=dn onsubmit="return check4()" action=http://www.my5757.com/tj/join.jsp target=_blank>
<tr vAlign=center>
<td>资费:包月5元
手机: <input style="BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid; HEIGHT: 16px" size=11 name=mobile> <input type=image height=18 width=45 src="http://www.my5757.com/yesky/images/d34.gif" align=middle border=0 name=image2> </td></tr><input type=hidden value=yjq name=stype> </form></table></td>
<td width=370 bgColor=#fbc403>介绍:细处着手,巧处用功。高手和菜鸟之间的差别就是:高手什么都知道,菜鸟知道一些。电脑小技巧收集最新奇招高招,让你轻松踏上高手之路。 </td></tr></table></td></tr></table>
<table cellSpacing=0 width="100%" border=1>
<tr>
<td>Java关键字导航</td></tr>
<tr>
<td>网络 J2ME 手机游戏 JavaCard Struts 游戏 分析器 JAAS EJB JavaMail 设计模式 J2EE </td></tr></table>
1.Adapter模式理论
Adapter模式又称变压器模式,关于该模式的基本概念请参考其他书籍或资料;这里我们只粗略讨论该模式两大实现方法的区别:基于类的Adapter模式和基于对象的Adapter模式。
<iframe align=right marginWidth=0 marginHeight=0 src="http://images.chinabyte.com/adjs/iframe-pip/y-software-pip.html" frameBorder=0 width=360 scrolling=no height=300></iframe> 基于类的Adapter模式的一般结构如下:Adaptee类为Adapter的父类,Adaptee类为适配源,适配目标(接口)也是Adapter的父类;基于类的Adapter模式比较适合应用于Adapter想修改Adaptee的部分方法的情况。基于对象的Adapter模式的一般结构如下:Adaptee类对象为Adapter所依赖,适配目标(接口)是Adapter的父类;基于对象的Adapter模式比较适合应用于Adapter想为Adaptee添加新的方法的情况。但在Adaptee类的方法与Adapter类的方法不同名而实现相同功能的情况下,我们一般也使用基于对象的Adapter模式,在J2SE事件处理中,我们就大量使用了基于对象的Adapter模式。
2.J2SE中的事件处理
J2SE中的事件处理代码示例如下:
<table width="100%" bgColor=#ffffff>
<tr>
<td>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);
}
}</td></tr></table>
在实际编程时,text_actionPerformed方法由程序员自己实现(弹出新的对话框),而WebFormDesigner_text_actionAdapter类是由开发环境依据基于对象的Adapter模式自动生成的。
3.Adapter模式与代码分析
由上面的分析可见,WebFormDesigner在本例中是Adaptee, WebFormDesigner_text_actionAdapter在本例中是Adapter, java.awt.event.ActionListener在本例中是适配目标。
适配目标为一接口,代码如下:
<table width="100%" bgColor=#ffffff>
<tr>
<td>public interface ActionListener extends EventListener {
/**
* Invoked when an action occurs.
*/
public void actionPerformed(ActionEvent e);
}</td></tr></table>
适配目标中只有一个方法: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模式。
zmbbs=1;
↑返回目录
前一篇:
X3D实战基础讲座之六
后一篇:
手机游戏趋势和相关J2ME APIs