JDK中的适配器模式
来源:互联网 发布:单片机中断系统代码 编辑:程序博客网 时间:2024/05/06 17:26
今天看了设计模式中的适配器模式,终于明白了java在添加事件时为什么要老是用到继承xxxAdapter了。
首先说说适配器是什么东西吧,网站上到处都有,就不多说了。主要有三种适配器:1、类适配器。2、对象适配器。3、双向适配器。
下面是一个简单的对象适配器的类图
下面具体讲下适配器模式在JDK中的实例
JDK中有很多Adapter类,如WindowAdapter,MouserAdapter等,它们分别实现了WindowsListerner,MouseListener等接口,这些都是类适配器的使用实例。
MouseListener 类
package java.awt.event;import java.util.EventListener;public interface MouseListener extends EventListener { /** * Invoked when the mouse button has been clicked (pressed * and released) on a component. */ public void mouseClicked(MouseEvent e); /** * Invoked when a mouse button has been pressed on a component. */ public void mousePressed(MouseEvent e); /** * Invoked when a mouse button has been released on a component. */ public void mouseReleased(MouseEvent e); /** * Invoked when the mouse enters a component. */ public void mouseEntered(MouseEvent e); /** * Invoked when the mouse exits a component. */ public void mouseExited(MouseEvent e);}
由MouseListener类的源码可知,应用接口中充斥着大量的方法,编程者如果要实现这些接口就必须实现所有的方法,而实际中,我们往往又并不需要所有的方法,这样就会有很多的方法是空的。这样不仅是一件很麻烦的事,也影响阅读。为此,JDK通过接口Adapter类为这些接口方法提供一个默认的空方法。如下面的MouseAdapter类。
MouseAdapter类
package java.awt.event;public abstract class MouseAdapter implements MouseListener, MouseWheelListener, MouseMotionListener { /** * {@inheritDoc} */ public void mouseClicked(MouseEvent e) {} /** * {@inheritDoc} */ public void mousePressed(MouseEvent e) {} /** * {@inheritDoc} */ public void mouseReleased(MouseEvent e) {} /** * {@inheritDoc} */ public void mouseEntered(MouseEvent e) {} /** * {@inheritDoc} */ public void mouseExited(MouseEvent e) {} /** * {@inheritDoc} * @since 1.6 */ public void mouseWheelMoved(MouseWheelEvent e){} /** * {@inheritDoc} * @since 1.6 */ public void mouseDragged(MouseEvent e){} /** * {@inheritDoc} * @since 1.6 */ public void mouseMoved(MouseEvent e){}}
MouseAdapter类实现了各种鼠标监听器的接口,编程时只需要继承这个类然后实现你所需要的接口即可。代码如下:
private class KeyMonitor extends KeyAdapter{public void keyPressed(KeyEvent e) {myTank.keyPress(e);}public void keyReleased(KeyEvent e) {myTank.keyReleased(e);}}
this.addWindowListener(new WindowAdapter(){/** * 窗口关闭事件 */public void windowClosing(WindowEvent e) {System.exit(0);}});
- JDK中的适配器模式
- JDK中的设计模式之适配器模式
- 设计模式--适配器模式(JDK中的应用)
- JDK IO中的适配器模式和装饰者模式
- 设计模式——适配器模式及jdk中的应用
- Framework中的适配器模式
- Java中的适配器模式
- Android中的适配器模式
- android中的适配器模式
- Android中的适配器模式
- Java中的适配器模式
- java中的适配器模式
- 《SpringMvc中的适配器模式》
- JDK与设计模式:适配器模式
- 设计模式中的适配器模式
- java框架中的适配器模式
- 论安卓适配器中的观察者模式
- Android源码中的适配器模式
- Microsoft JET Database Engine 错误 '80004005'的解决办法
- java 合并两个byte数组
- 在ie6下,我们使用select的时候
- zz在windows下编译FFMpeg
- 搜索引擎优化之Google与百度对待网站的区别
- JDK中的适配器模式
- 稀疏表达:向量、矩阵与张量(上)
- Ext js Form 交互式表单 initEditor:
- C++中this指针的理解
- 稀疏表达:向量、矩阵与张量(中)
- JavaScirpt设计模式——链式调用
- 原来类名也可以作为数据类型使用
- 压缩感知科普文两则
- 最新10款精美的免费PSD网站模板下载