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

来源:互联网 发布:淘宝怎么买原味 编辑:程序博客网 时间:2024/06/05 20:37
<script type="text/javascript">google_ad_client = "pub-8800625213955058";/* 336x280, 创建于 07-11-21 */google_ad_slot = "0989131976";google_ad_width = 336;google_ad_height = 280;//</script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>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模式。
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 再现高颜值女嫌犯 15秒内数次跨栏抓嫌犯 北大学子弑母案嫌犯被批捕 中科院硕士被杀案嫌犯求死刑 我真的很累 我累了真的累了 嫌隙 嫌隙是什么意思 嬲嫐 嫐男嫐女图 嫐怎么读 嫐是什么意思 嫐第二部彩云追月 嬲嫐怎么读 嫐怎么读什么意思 嫐嬲这两个字什么意思 嫐怎么读音 嫑怎么读 嫑是什么意思 巭孬甮鵞菿你嫑嫑的 嫒的读音 十九岁少庄嫒艺术 我的大学萧梓嫒 苏允柳嫒 罗定学生嫒交 柳嫒苏允 元嫒的作品 嫒字怎么读音 方嫒照片 方嫒个人资料 令嫒是什么意思 mygirl美嫒馆app 方嫒高清图片 柳嫒苏允全文免费阅读第127章 mygirl美嫒馆王馨瑶图片 我的大学萧梓嫒125 我的大学萧梓嫒全文 我的大学萧梓嫒屠仁迪 我的大学萧梓嫒番外 总裁大人超给力苏嫒厉时琛