定义:通过将已存在的接口转换为新接口来实现一个应用中不相关类的统一性与可用性。
优点及使用:
- 尽力去匹配接口(窗口适配器等)
- 让不相关的类一起工作
- 更多一致性
- 增加类的透明度
- 可插拔套件
- 代理对象
- 类的高可用性
- 通过继承或者融合达到目标
- 相关模式有:
代理模式:提供与其主题一致的接口,但是适配器是提供适合对象的不同接口
挂件模式:他致力于给对象添加新功能,但是适配器是让两个不同接口配合工作
桥接模式:分离接口与其实现,让对象高度独立,但是适配器尝试修改和协对像的接口
例子:
java API中著名的适配器类有WindowAdapter,ComponentAdapter,ContainerAdapter,FocusAdapter,KeyAdapter,MouseAdapter和MouseMotionAdapter。我们知道WindowListner接口有七个方法,不管什么时候你需要实现这样的接口,你都需要实现所有这七个方法,WindowAdapter实现WindowListener接口,不过给了七个空的方法实现,当你继承WindowAdapter,你就可以选择你需要实现的方法进行实现,下边是一个类似的例子。
public interface Windowlistener {
public void windowClosed(WindowEvent e);
public void windowOpened(WindowEvent e);
public void windowIconified(WindowEvent e);
public void windowDeiconified(WindowEvent e);
public void windowActivated(WindowEvent e);
public void windowDeactivated(WindowEvent e);
public void windowClosing(WindowEvent e);
}
public class WindowAdapter implements WindowListner{
public void windowClosed(WindowEvent e){}
public void windowOpened(WindowEvent e){}
public void windowIconified(WindowEvent e){}
public void windowDeiconified(WindowEvent e){}
public void windowActivated(WindowEvent e){}
public void windowDeactivated(WindowEvent e){}
public void windowClosing(WindowEvent e){}
}
//下边是测试代码
import javax.swing.*;
import java.awt.event.*;
class Test extends JFrame {
public Test () {
setSize(200,200);
setVisible(true);
addWindowListener(new Closer());
}
public static void main(String[] args) {
new Test();
}
class Closer extends WindowAdapter {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}
}
类的重用性和新类与已存在类的一致性。例如,一个纯净的系统已经设计出来了,你想添加更多的功能,附加接口就可以使用适配器模式来插入到已存在的系统。
interface Clean {
public void makeClean();
}
class Office implements Clean{
public void makeClean() {
System.out.println("Clean Office");
}
}
class Workshop implements Clean{
public void makeClean() {
System.out.println("Clean Workshop");
}
}
interface Extra extends Clean{
public void takeCare();
}
class Facility implements Extra{
public void makeClean() {
System.out.println("Clean Facility");
}
public void takeCare() {
System.out.println("Care has been taken");
}
}
//为了重用Workshop和Office类,我们可以创建适配器接口Extra和添加新的方法takeCare
class Test {
static void Jobs (Extra job) {
if (job instanceof Clean)
((Clean)job).makeClean();
if (job instanceof Extra)
((Extra)job).takeCare();
}
public static void main(String[] args) {
Extra e = new Facility();
Jobs(e);
Clean c1 = new Office();
Clean c2 = new Workshop();
c1.makeClean();
c2.makeClean();
e.makeClean();
}
}
通过融合,我们也可以实现适配器模式,叫做包装。例如,Data类已经被设计好并且已经测试通过了,你想将这个类添加到你的系统中,你可以通过声明变量的方式包装或者将这个类嵌入到你的系统。
//测试通过的类
class Data {
public void add(Info){}
public void delete(Info) {}
public void modify(Info){}
//...
}
//在自己的系统中使用Data
class AdaptData {
Data data;
public void add(Info i) {
data.add(i);
//more job
}
public void delete(Info i) {
data.delete(i);
//more job
}
public void modify(Info i) {
data.modify(i);
//more job
}
//more stuff here
//...
}
分享到:
相关推荐
9v电源适配器是日常生活中常见的一种电子设备,它能够将交流电或直流电转换成特定电压的直流电源,以适应各类电子产品的电源需求。电源适配器的核心技术在于其电路原理图的设计,这涉及到电子工程领域的多个知识点。...
今天我们要探讨的是JAVA设计中的两个重要模式:抽象类与适配器模式。 首先,我们来理解一下“抽象”。抽象是面向对象编程的核心概念之一,它帮助我们处理对象的复杂性。在Java中,抽象通常通过抽象类来实现。抽象类...
适配器模式是一种常用的设计模式,它在软件工程中扮演着重要的角色,允许不兼容的接口之间进行通信。在这个Java实现中,我们将深入探讨适配器模式的两大类型:类适配器模式和对象适配器模式,并通过具体的代码示例和...
标题中的“1394网络适配器驱动”指的是基于IEEE 1394接口的网络适配器所需的一种驱动程序。IEEE 1394,通常被称为FireWire或i.LINK,是一种高速数据传输标准,最初由Apple公司开发,后来成为一种广泛应用于计算机和...
万能网络适配器驱动器是计算机硬件系统中不可或缺的一部分,尤其对于经常需要更换或升级网络设备的用户来说,它的重要性不言而喻。网络适配器,也称为网卡或者NIC(Network Interface Card),是计算机连接到网络的...
USB红外线适配器驱动是将红外通讯技术与USB接口结合的一种硬件设备,它使得计算机可以通过红外线进行数据传输。这种适配器广泛应用于没有内置红外功能或需要增强红外功能的电脑,尤其在需要无线传输小量数据,如文档...
在Android开发中,适配器(Adapter)是一个关键的概念,它起到了桥梁的作用,连接数据源与视图组件,使得数据可以被显示在ListView、GridView、Spinner等控件中。BaseAdapter是所有自定义适配器的基类,它提供了一个...
【鸿洋recyclerview万能适配器实战】 在Android开发中,RecyclerView因其高效、灵活的特性,成为展示列表数据的标准组件。本项目基于鸿洋(Hongyang)的RecyclerView万能适配器,旨在通过实例来深入理解并掌握...
标题中的“USB 串口适配器修改软件工具”是一个专为USB串口适配器设计的应用程序,它允许用户对设备进行特定的配置或修改。在这个场景中,该工具的功能集中在修改蓝牙适配器的MAC地址和广播RAWDATA。MAC地址(Media ...
协议适配器错误解决方法 协议适配器错误是指在数据库管理系统中,协议适配器无法正常工作,导致数据库无法启动或连接失败。这种错误可能是由于多种原因引起的,如监听服务没有启动、数据库实例没有启动、注册表问题...
Win7 隧道适配器关闭方法 Win7 隧道适配器关闭方法是指关闭 Win7 操作系统中多余的隧道适配器,以方便查看网卡 IP 地址。Windows 操作系统在 IPv6 迁移过程中需要使用一种或多种 IPv6 过渡技术,导致系统中存在多条...
本次,我们主要介绍一下VMWare主要提供的三种常用的网络适配器模式,分别是NAT、桥接、仅主机。好了,接下来我们就逐一讲解一下这几个网络适配器的配置及作用。 2.仅主机模式(Host-only) 2.1 Host-Only模式概念 ...
12V1A电源适配器的电路原理图 电源适配器是各种电子设备中不可或缺的组件,它们在维持电子设备的稳定运行中扮演着非常重要的角色。今天,我们将要讨论的就是12V1A电源适配器的电路原理图,这个电路原理图展示了电源...
适配器模式是一种在软件工程中广泛使用的结构型设计模式,它允许两个不兼容的接口之间进行通信。在Java中,适配器模式扮演着重要的角色,尤其在处理遗留代码或者第三方库集成时,能够有效地解决接口不匹配的问题。...
根据给定文件的信息,我们可以详细地探讨笔记本电源适配器的工作原理及其维修方法。电源适配器是笔记本电脑中至关重要的部件之一,它负责将市电转换为适合笔记本内部电路工作的电压,确保笔记本电脑能够正常运行。 ...
适配器模式是一种软件设计模式,它允许两个不兼容的接口之间进行通信。在这个案例中,我们关注的是如何通过适配器模式解决实际编程问题。文章《适配器模式案例代码》提供了具体的实现示例,链接指向了CSDN博主...
Android 常用适配器总结 Android 中的适配器是一种非常重要的组件,它负责将复杂的数据转换为可被 View 显示的形式。适配器可以看作是界面数据绑定的理解,它可以处理复杂的数据,如数组、链表、数据库、集合等,并...
标题中的“Broadcom 802.11n 网络适配器”指的是由Broadcom公司生产的符合802.11n无线局域网标准的网络适配器。802.11n是Wi-Fi联盟认证的一个无线局域网(WLAN)标准,它在2.4 GHz和5 GHz频段上运行,最大理论传输...
适配器模式是一种软件设计模式,它允许两个不兼容的接口之间进行通信。在iOS开发中,这种模式尤其有用,因为我们需要将不同的组件或库集成到一个统一的系统中,而这些组件或库可能有着各自独立的设计和接口。适配器...
适配器模式是一种常用的设计模式,它在软件工程中扮演着重要的角色,特别是在解决系统间的兼容性和接口不匹配问题时。适配器模式的核心思想是将一个类的接口转换成客户希望的另一个接口,使原本由于接口不兼容而无法...