适配器模式之单接口适配器

  在java中,除了对象适配器外,还有一种更常见的适配器,即单接口适配器,单接口适配器可以让用户更加方便的使用该接口。

  例如,java.awt.event包中的MouseListener接口一共定义了五个方法:

1 void mouseClicked(MouseEvent arg0) {}
2 void mouseEntered(MouseEvent arg0) {}
3 void mouseExited(MouseEvent arg0) {}
4 void mousePressed(MouseEvent arg0) {}
5 void mouseReleased(MouseEvent arg0) {}

  当需要一个实现MouseListener接口的类的对象时,那么在编写创建改对象时,该类必须实现MouseListener接口中的全部方法,但是往往用户仅仅需要实现该接口中的某一个方法,这样的话就出现了很多无用代码。

  如果使用单接口适配器的话就可以减少代码的编写,可以让用户专心的实现所需要的方法。

针对一个接口的单接口适配器就是已经实现了该接口的类,并对接口中的每个方法都给出了一个默认的实现。比如,java.awt.event包中的MouseAdapter就是MouseListener接口中的单接口适配器,将MouseListener接口中的五个方法全部实现为不进行任何操作,即这五个方法体中没有任何语句。

  当用户再需要一个实现MouseListener接口的类的实例时,只需要编写一个MouseAdapter的子类即可,并在子类中重写自己需要的接口方法即可。例如:

  

 1 package com.adatpe;
 2
 3 import java.awt.event.MouseAdapter;
 4 import java.awt.event.MouseEvent;
 5
 6 public class HandleEvent extends MouseAdapter {
 7     @Override
 8     public void mousePressed(MouseEvent arg0) {
 9         // TODO Auto-generated method stub
10         super.mousePressed(arg0);
11     }
12
13 }

 

  这样就没有必要实现接口的所有方法了,减少了很多无用代码。

  其实在java API中,如果一个接口中方法多于一个时,就针对该接口提供相应的单接口适配器,如人们熟悉的WindowAdapter、KeyAdapter等。

 

时间: 2024-10-29 04:42:51

适配器模式之单接口适配器的相关文章

详解 JAVA 适配模式和 接口适配器

 JAVA适配模式 意图将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作.(GoF) 场景 相信很多人都知道什么是显卡,也有很多人知道显卡的本名--图形适配器.恩,是的,正好这回说说Apater模式,就拿显卡来例子来分析一下Adapter模式. 我们知道显示器(Client)是用来显示图形的,它是不能显示数据,它只能够接受来自图形发送设备Target的信号.可是我们手头上只有CPU(Adaptee)这个产生各种描述图形的数据的

详解 JAVA 适配模式 和 接口适配器

JAVA适配模式 意图将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作.(GoF) 场景 相信很多人都知道什么是显卡,也有很多人知道显卡的本名--图形适配器.恩,是的,正好这回说说Apater模式,就拿显卡来例子来分析一下Adapter模式. 我们知道显示器(Client)是用来显示图形的,它是不能显示数据,它只能够接受来自图形发送设备Target的信号.可是我们手头上只有CPU(Adaptee)这个产生各种描述图形的数据的数

Java 设计模式 接口型模式 之 适配器Adapter模式 (二)

适配器模式的意图 : 使用不同接口的类所提供的服务为客户端提供其所希望的接口; -- 问题解决场景 : 在 类A 中实现了接口中的抽象方法, 客户端B 已经定义好了方法的调用, 但是调用的方法 与 类A 中的方法名不同, 这时我们就需要适配器模式了; -- eg : 类A 实现了接口A1, 类B 实现了接口B1, 这里C调用 A 和 B 希望 A 和 B 能提供相同方法的接口, 这时我们需要使用适配器模式; 1. 接口适配 (1) 接口适配简介 接口适配 :  -- 问题场景 : 客户端需要调用

初探设计:Java接口和抽象类何时用?怎么用?

Writer      :BYSocket(泥沙砖瓦浆木匠 今天犯了个错: "接口变动,伤筋动骨,除非你确定只有你一个人在用".哪怕只是throw了一个新的Exception.哈哈,这是我犯的错误. 一.接口和抽象类 类,即一个对象. 先抽象类,就是抽象出类的基础部分,即抽象基类(抽象类).官方定义让人费解,但是记忆方法是也不错的 - 包含抽象方法的类叫做抽象类. 接口就是把抽象的深度更深,它就像用简短的非逻辑的一些规则表示类之间的关系.可以比作协议,比如通信使用的UDP/TCP协议等

PHP的适配器模式

适配器模式(Adapter)模式:将一个类的接口,转换成客户期望的另一个类的接口.适配器让原本接口不兼容的类可以合作无间. [适配器模式中主要角色] 目标(Target)角色:定义客户端使用的与特定领域相关的接口,这也就是我们所期待得到的 源(Adaptee)角色:需要进行适配的接口 适配器(Adapter)角色:对Adaptee的接口与Target接口进行适配:适配器是本模式的核心,适配器把源接口转换成目标接口,此角色为具体类. 其实也就是你家墙上有一个两口的插座(Adaptee),但你买了一

传统设计模式(七)适配器模式(附外观模式)

记得以前章节谈过的装饰者模式,我们将对象包装起来,赋予他们新的职责.而现在则是以不同目的,包装某些对象:让他们的接口看起来不像自己而像是别的东西.这样就可以在设计中,将类的接口转换成想要的接口,以便实现不同的接口. 在项目中,适配器模式一般扮演者协调者的作用. 1.客户通过目标接口调用适配器的方法对适配器发出请求 2.适配器使用被适配者接口把请求转换成被适配者的一个或多个调用接口 3.客户接受到调用的结果,但并未察觉这一切是适配器在起转换作用 另外还有一种特殊情况,万一系统新旧并存,旧的部分期望

设计模式之旅-第一天 适配器模式

什么是设计模式 在软件开发的世界里,许多领域中的问题具有相似的特性.就像造房子一样,不管要盖一座购物中心 ,还是要盖一座假日酒店,它们之间都有基本上相似的工作步骤,都需要搭建梁柱,铺置房顶等工作. 在做这些工作时都需要遵循某种特殊的技术要求,以使得房子的结构.承受能力达到合理,这些规则是 前人经过精确的计算和失败的教训得来的.对于软件开发也一样,如果我们希望编写出来健壮.灵活的 应用程序,也有必要进行精细的设计,并且可以通过遵循某种规则以达到这个目标.这些规则或者称之 为技巧就是设计模式. 设计

hand first设计模式 -适配器模式

适配器模式 :将一个类的接口,转换成客户期望的另一个接口.适配器上原本接口不兼容的类可以合作无间. 项目比较旧的代码,迭代采用Enumeration Java代码 public class EnumerationTest { public Enumeration getEnum(Vector list){ Enumeration e = list.elements(); return e; } } 项目比较旧的代码,迭代采用Iterator Java代码 public class Iterato

.net设计模式实例之适配器模式(Adapter Pattern)

一.适配器模式简介(Brief Introduction) 适配器模式,将一个类装换成客户期望的另外一个接口.Adapter模式使的原本由于接口 不兼容而不能工作的那些类可以一起工作. 二.解决的问题(What To Solve) 1.使用第三方组件,而这个组件的接口与目前系统接口不兼容(如方法与系统方法不一 致等),可以使用适配器模式解决接口不兼容问题. 2.使用早前项目一些有用的类,可以用适配器模式解决现有接口与原有对象接口不兼容 问题. 三.适配器模式分析(Analysis)1.适配器模式