- 浏览: 214288 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
teacodeing:
111
理解Java常量池 -
teacodeing:
122334455
理解Java常量池 -
最佳蜗牛:
有理有据,期待更多这样的文章。
理解Java常量池 -
ruijin5566:
cry615 写道zean 写道“在方法区中,而方法区是在JV ...
理解Java常量池 -
cry615:
zean 写道“在方法区中,而方法区是在JVM内存模型中的堆中 ...
理解Java常量池
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中的事件处理代码示例如下:
- 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);
- }
- }
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);
- }
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模式。
发表评论
-
设计模式学习笔记(二十二)—FlyWeight享元模式
2008-07-04 17:04 915一、FlyWeight模式定义: ... -
设计模式学习笔记(二十一)—Composite模式
2008-07-04 17:02 832今天开始学习Composite模式,首先让我们看一下它的定义: ... -
设计模式学习笔记(二十)—Visitor访问者模式
2008-07-04 17:01 866Visitor模式定义:表示一个作用于某对象结构中各元素的操作 ... -
设计模式学习笔记(十九)—Chain of Responsibility职责链模式
2008-07-04 17:00 857Chain of Responsibility模式定义:为了避 ... -
设计模式学习笔记(十八)—Mediator中介者模式
2008-07-04 16:58 893设计模式学习笔记(十八)—Mediator中介者模式一、 模式 ... -
设计模式学习笔记(十七)—Memento备忘录模式
2008-07-04 16:55 967一、 模式定义:在不破坏封装的前提下,捕获一个对象的内部状态 ... -
设计模式学习笔记(十六)—Proxy模式
2008-07-04 16:53 1364一、 Proxy模式定义:为其他对象提供一种代理以控制这个对象 ... -
设计模式学习笔记(十五)—State模式
2008-07-04 16:51 1007一、 State模式定义:允许一个对象在其状态改变时,改变它的 ... -
设计模式学习笔记(十四)—Command模式
2008-07-04 16:49 873一、 Command模式定义:将一个请求封装为一个对象,从而使 ... -
设计模式学习笔记(十三)—Iterator迭代器模式
2008-07-04 16:48 625Iterator模式定义:提供一个方法顺序访问一个聚合对象的 ... -
设计模式学习笔记(十二)—Builder建造者模式
2008-07-04 16:47 869Builder模式定义:将一个复杂对象的构建与它的表示分离, ... -
设计模式学习笔记(十一)—Prototype原型模式
2008-07-04 16:45 998Prototype模式的意图是: ... -
设计模式学习笔记(十)—Factory Method模式
2008-07-04 16:44 863《设计模式》一书对Factory Method模式是这样描述的 ... -
设计模式学习笔记(九)—Singleton模式
2008-07-04 16:43 861《设计模式》一书对Singleton模式是这样描述的:保证一个 ... -
设计模式学习笔记(八)—Template Method模式
2008-07-04 16:42 773《设计模式》一书对Temp ... -
设计模式学习笔记(七)—Observer观察者模式
2008-07-04 16:42 848《设计模式》一书对Observer是这样描述的:定义对象间的一 ... -
设计模式学习笔记(六)—Decorator装饰模式
2008-07-04 16:41 840《设计模式》一书对Decorator是这样描述的: 动态地给 ... -
设计模式学习笔记(五)—Abstract Factory抽象工厂模式
2008-07-04 16:38 819GOF《设计模式》一书对Abstract Factory模式是 ... -
设计模式学习笔记(四)—Bridge桥接模式
2008-07-04 16:36 856设计模式》一书对Bridge是这样描述的: 将抽象与其实现解耦 ... -
设计模式学习笔记(三)—-Strategy策略模式
2008-07-04 16:30 921GOF《设计模式》一书对Strategy模式是这样描述的: ...
相关推荐
在本文中,我们通过一个形如"形状"的范例来讲解Adapter模式的概念和实现。 首先,我们有一个抽象基类`Shape`,它定义了一个`Draw()`方法,用于在屏幕上绘制图形。`Square`和`Circle`类继承自`Shape`并实现了`Draw()...
Adapter模式在实际开发中的应用广泛,例如在数据库连接库中,不同数据库的API差异很大,通过Adapter模式可以提供统一的接口,简化开发工作。又如在GUI编程中,可能需要将不同操作系统提供的事件系统适配到统一的处理...
本文通过一个实际的Android圆形菜单项目,展示了Adapter模式在自定义View中的应用。通过自定义CircleMenuLayout,开发者实现了菜单项在环形布局中的展示,并提供了数据绑定和点击事件处理。这对于提升UI交互性和个性...
在IT行业中,Adapter模式是一种设计模式,它在不同的接口之间起着桥梁的作用,允许不兼容的类协同工作。本主题将深入探讨Adapter的基础知识,帮助你理解其原理、应用场景及实现方式。 Adapter模式的主要作用是解决...
在Android应用开发中,ListView是显示大量数据列表的常用组件,尤其在构建用户界面时扮演着重要角色。本文将深入探讨如何在Eclipse开发环境中利用ListView结合Adapter来展示数据。 首先,`ListView`是一个可滚动的...
总的来说,Java/IO库巧妙地运用了Decorator和Adapter模式,实现了流处理器的动态扩展和接口的兼容性,使得Java程序在处理输入输出时拥有极高的灵活性。这种设计思想不仅提升了代码的可维护性,也使得开发者能够更...
在实际应用中,适配器模式常用于库的迁移、接口的统一、硬件设备的驱动程序等领域。例如,当你需要将一个使用旧API的第三方库集成到使用新API的项目中,适配器可以作为一个桥梁,将旧接口转换为新接口,使得两者可以...
在C++中,Adapter模式扮演着至关重要的角色,特别是在处理遗留代码或者第三方库时,能够有效地将新旧系统融合在一起。 Adapter模式的核心思想是创建一个适配器对象,该对象将一个类的接口转换成客户端期望的另一个...
适配器模式在JavaScript中的应用主要体现在以下几个方面: 1. **接口转换**:适配器模式可以将一个对象的接口转换为客户期望的另一种接口。在JavaScript中,这可能涉及到对已有对象方法的包装,使其符合新的调用...
在Java编程语言中,事件处理是用户界面(UI)编程的核心部分,它使得应用程序能够响应用户的操作,如点击按钮、选择菜单项或者滚动窗口。在《JAVA事件处理指南》这本书中,作者深入浅出地讲解了Java事件处理的各个...
这些模式在设计复杂系统时起着关键作用,比如命令模式可以用于实现GUI事件处理,迭代器模式则提供了一种遍历集合元素的标准方式,备忘录模式用于保存对象状态以便恢复,模板方法模式定义了操作的框架,让子类可以...
Java事件处理主要基于观察者模式(Observer Pattern),在这种模式中,事件源(通常是GUI组件,如按钮、文本框等)会发布事件,而事件监听器则订阅这些事件并执行相应的处理逻辑。Java AWT和Swing库提供了丰富的事件...
在ASP.NET中,适配器模式同样可以应用于各种场景,帮助开发人员将已有组件或服务与新系统无缝对接。 首先,适配器模式的核心思想是通过一个中间层(适配器)来转换不同接口之间的通信,使得原本无法直接协作的类或...
在本文中,我们将深入探讨适配器模式的概念、结构、作用以及在实际开发中的应用。 适配器模式的核心思想是“包装”(wrapping),它通过创建一个新的类,这个新类将作为原有类与新接口之间的桥梁。适配器模式主要有...
Java GUI事件处理机制是Java应用程序开发中的重要组成部分,主要用于响应用户在图形用户界面中的各种操作。这一机制采用了委托事件模型,使得程序结构清晰,易于扩展。下面将详细讲解这一机制的关键概念、工作流程...
在实际应用中,适配器模式常用于以下场景: 1. 集成第三方库或组件,它们的接口与项目需求不符。 2. 将遗留系统的接口转换为新的系统接口。 3. 处理不同硬件、操作系统或网络协议之间的兼容性问题。 通过使用适配器...
在Android的Adapter实现中,关键在于ViewHolder设计模式的运用。ViewHolder模式是为了解决在滚动列表时频繁地创建和销毁View对象导致的性能问题。通过缓存View对象的引用,ViewHolder可以快速地找到并更新对应的UI...
这个主题“这种Adapter的用法”显然聚焦于如何在实际编程中运用Adapter模式,特别是针对Android开发中的Adapter类。适配器用法是Android应用开发中的关键部分,因为它们在UI组件(如ListView、RecyclerView)与数据...