`
yiliner
  • 浏览: 214288 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

阅读更多

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

  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中的事件处理代码示例如下:

Java代码 复制代码
  1. public class WebFormDesigner extends JFrame {   
  2. void jbInit() throws Exception {   
  3. text.addActionListener(new WebFormDesigner_text_actionAdapter(this));   
  4. }   
  5. void text_actionPerformed(ActionEvent e) {   
  6. TextDialog createText = new TextDialog();   
  7. createText.setVisible(true);   
  8. createText.setTitle("TEXT");   
  9. createText.setBounds(100100500300);   
  10. createText.setModal(true);   
  11. createText.show();   
  12. }   
  13. }   
  14. class WebFormDesigner_text_actionAdapter implements java.awt.event.ActionListener {   
  15. WebFormDesigner adaptee;   
  16. WebFormDesigner_text_actionAdapter(WebFormDesigner adaptee) {   
  17. this.adaptee = adaptee;   
  18. }   
  19. public void actionPerformed(ActionEvent e) {   
  20. adaptee.text_actionPerformed(e);   
  21. }   
  22. }  
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在本例中是适配目标。
    适配目标为一接口,代码如下:

Java代码 复制代码
  1. public interface ActionListener extends EventListener {   
  2. /**  
  3. * Invoked when an action occurs.  
  4. */  
  5. public void actionPerformed(ActionEvent e);   
  6. }  
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模式。

分享到:
评论

相关推荐

    设计模式之Adapter模式和代码实现

    在本文中,我们通过一个形如"形状"的范例来讲解Adapter模式的概念和实现。 首先,我们有一个抽象基类`Shape`,它定义了一个`Draw()`方法,用于在屏幕上绘制图形。`Square`和`Circle`类继承自`Shape`并实现了`Draw()...

    ②设计模式之Adapter模式

    Adapter模式在实际开发中的应用广泛,例如在数据库连接库中,不同数据库的API差异很大,通过Adapter模式可以提供统一的接口,简化开发工作。又如在GUI编程中,可能需要将不同操作系统提供的事件系统适配到统一的处理...

    Adapter模式实战之重构鸿洋集团的Android圆形菜单建行

    本文通过一个实际的Android圆形菜单项目,展示了Adapter模式在自定义View中的应用。通过自定义CircleMenuLayout,开发者实现了菜单项在环形布局中的展示,并提供了数据绑定和点击事件处理。这对于提升UI交互性和个性...

    1-7Adapter基础讲解

    在IT行业中,Adapter模式是一种设计模式,它在不同的接口之间起着桥梁的作用,允许不兼容的类协同工作。本主题将深入探讨Adapter的基础知识,帮助你理解其原理、应用场景及实现方式。 Adapter模式的主要作用是解决...

    Android中ListView+Adapter

    在Android应用开发中,ListView是显示大量数据列表的常用组件,尤其在构建用户界面时扮演着重要角色。本文将深入探讨如何在Eclipse开发环境中利用ListView结合Adapter来展示数据。 首先,`ListView`是一个可滚动的...

    Java-从Decorator,Adapter模式看Java/IO

    总的来说,Java/IO库巧妙地运用了Decorator和Adapter模式,实现了流处理器的动态扩展和接口的兼容性,使得Java程序在处理输入输出时拥有极高的灵活性。这种设计思想不仅提升了代码的可维护性,也使得开发者能够更...

    适配器(Adapter)模式

    在实际应用中,适配器模式常用于库的迁移、接口的统一、硬件设备的驱动程序等领域。例如,当你需要将一个使用旧API的第三方库集成到使用新API的项目中,适配器可以作为一个桥梁,将旧接口转换为新接口,使得两者可以...

    C++设计模式代码资源16_Adapter.zip

    在C++中,Adapter模式扮演着至关重要的角色,特别是在处理遗留代码或者第三方库时,能够有效地将新旧系统融合在一起。 Adapter模式的核心思想是创建一个适配器对象,该对象将一个类的接口转换成客户端期望的另一个...

    Adapter适配器模式在JavaScript设计模式编程中的运用分析_.docx

    适配器模式在JavaScript中的应用主要体现在以下几个方面: 1. **接口转换**:适配器模式可以将一个对象的接口转换为客户期望的另一种接口。在JavaScript中,这可能涉及到对已有对象方法的包装,使其符合新的调用...

    JAVA事件处理指南

    在Java编程语言中,事件处理是用户界面(UI)编程的核心部分,它使得应用程序能够响应用户的操作,如点击按钮、选择菜单项或者滚动窗口。在《JAVA事件处理指南》这本书中,作者深入浅出地讲解了Java事件处理的各个...

    设计模式 在java语言中的应用

    这些模式在设计复杂系统时起着关键作用,比如命令模式可以用于实现GUI事件处理,迭代器模式则提供了一种遍历集合元素的标准方式,备忘录模式用于保存对象状态以便恢复,模板方法模式定义了操作的框架,让子类可以...

    Java事件处理框架

    Java事件处理主要基于观察者模式(Observer Pattern),在这种模式中,事件源(通常是GUI组件,如按钮、文本框等)会发布事件,而事件监听器则订阅这些事件并执行相应的处理逻辑。Java AWT和Swing库提供了丰富的事件...

    ASP.NET的适配器设计模式(Adapter)应用详解

    在ASP.NET中,适配器模式同样可以应用于各种场景,帮助开发人员将已有组件或服务与新系统无缝对接。 首先,适配器模式的核心思想是通过一个中间层(适配器)来转换不同接口之间的通信,使得原本无法直接协作的类或...

    设计模式——适配器模式(adapter)

    在本文中,我们将深入探讨适配器模式的概念、结构、作用以及在实际开发中的应用。 适配器模式的核心思想是“包装”(wrapping),它通过创建一个新的类,这个新类将作为原有类与新接口之间的桥梁。适配器模式主要有...

    JavaGUI事件处理机制

    Java GUI事件处理机制是Java应用程序开发中的重要组成部分,主要用于响应用户在图形用户界面中的各种操作。这一机制采用了委托事件模型,使得程序结构清晰,易于扩展。下面将详细讲解这一机制的关键概念、工作流程...

    设计模式之适配器模式(Adapter Pattern)

    在实际应用中,适配器模式常用于以下场景: 1. 集成第三方库或组件,它们的接口与项目需求不符。 2. 将遗留系统的接口转换为新的系统接口。 3. 处理不同硬件、操作系统或网络协议之间的兼容性问题。 通过使用适配器...

    android 打造万能的Adapter

    在Android的Adapter实现中,关键在于ViewHolder设计模式的运用。ViewHolder模式是为了解决在滚动列表时频繁地创建和销毁View对象导致的性能问题。通过缓存View对象的引用,ViewHolder可以快速地找到并更新对应的UI...

    这种Adapter的用法

    这个主题“这种Adapter的用法”显然聚焦于如何在实际编程中运用Adapter模式,特别是针对Android开发中的Adapter类。适配器用法是Android应用开发中的关键部分,因为它们在UI组件(如ListView、RecyclerView)与数据...

Global site tag (gtag.js) - Google Analytics