Java中的适配器类是什么? 适配器类及其类型的优点

已发表: 2021-05-19

目录

什么是适配器类?

在 JAVA 中,适配器类允许侦听器接口的默认实现。 侦听器接口的概念源于委托事件模型。 它是用于处理图形用户界面 (GUI) 编程语言(如 JAVA)中事件的众多技术之一。

GUI 编程主要是事件驱动的,用户通过相关的视觉和图形与系统交互。 这意味着用户发起的每个活动,例如改变鼠标指针在屏幕上的坐标的鼠标移动、单击按钮或滚动页面,都被视为一个独立事件。

这些独立的事件活动中的每一个都内在地链接到一个代码段,该代码段迭代应用程序应该向用户提供的响应。 途径很简单。 用户(源)生成一个事件并将其发送到一个或多个侦听器接口。 一旦接收到事件电位,侦听器接口就会处理该事件并返回合适的响应。

该途径证实了事件处理的过程。 因此,JAVA 中的适配器类用于实现具有一组虚拟方法的接口。 如果程序员选择继承适配器类,他们将不会被迫实现特定侦听器接口下列出的所有方法。 适配器类可以进一步子类化,以便程序员可以只覆盖所需的方法。 换句话说,通过使用适配器类,程序员可以快速构建自己的现场事件监听器接口。 这有助于节省代码。

适配器类和侦听器接口之间的关系是什么?

当程序员打算利用接口下列出的大多数方法时,将使用侦听器。 如果侦听器接口由类直接实现,则该接口内的所有方法都需要实现,导致代码过大。 这种复杂性可以通过调用适配器类来解决。 在事件仅调用特定方法的情况下,适配器类被证明是必不可少的。

程序员只需创建它的子类并重写感兴趣的方法即可使用适配器类。 因此,适配器类有利于 JAVA 中具有多个方法的侦听器接口。 为了更好地理解这一点,让我们考虑一下 MouseListener 接口的例子。 每当鼠标状态发生变化时,都会通知该界面。 它有五个方法,mouse clicked、mouseExited、mouseEntered、mousePressed 和 mouseReleased。

当通知某个事件时,即使只需要这些方法中的一个,也需要实现所有这些方法。 不需要的方法保留为空。 适配器类用于避免空方法体的这种不必要的实现。

了解适配器设计模式

用非技术术语来说,根据定义,适配器在结构上设计为允许两个不兼容的接口一起工作。 因此,适配器模式能够使两个不兼容的接口兼容,而无需更改它们现有的代码。 相应的接口可能不一致,但它们的内部功能应该与所寻求的要求相匹配。 为了更好地阐明这一点,让我们考虑一个相关的例子。

我们知道不同的国家有不同的电源插座、电压和频率测量值。 如果我们必须在另一个国家使用按照一个国家的规范设计的设备,我们需要确保该设备是兼容的。

例如,在英国,通常使用 G 型插座,在美国和日本,通常使用 A 型和 B 型插座,而在印度,则使用 C 型、D 型和 M 型。从印度携带的笔记本电脑或移动设备将因此与美国和日本的电气规格不兼容。 这就是适配器的目的对于将不兼容的代码转换为兼容的代码至关重要的地方。

适配器类的类型

适配器类可以在java中找到。 awt.the event、java.awt.dnd 和 java.swing.event 包。 下面针对这些包中的每一个都提到了标准适配器类及其在 JAVA 中的相应侦听器接口。

1. 爪哇。 重量前夕

适配器类监听器接口
窗口适配器窗口监听器
密钥适配器按键监听器
鼠标适配器鼠标监听器
鼠标运动适配器鼠标运动监听器
焦点适配器焦点监听器
组件适配器组件监听器
容器适配器容器监听器
层次边界适配器HierarchyBoundsListener

2.java.awt.dnd

适配器类监听器接口
拖动源适配器拖动源监听器
拖动目标适配器拖动目标监听器

3.javax.swing.event

适配器类监听器接口
鼠标输入适配器鼠标输入监听器
内部框架适配器内部帧监听器

这些存在于它们各自的 Java 包的抽象窗口工具包中。 要了解侦听器接口中包含的方法的性质,让我们考虑几个示例:

  1. WindowListener接口定义了与窗口事件相关的方法,包括窗口的打开和关闭、窗口的激活和去激活以及窗口的图标化和解毒。
  2. KeyListener 接口定义了处理由用户与键盘组件交互触​​发的键事件的方法。
  3. 当鼠标稳定并接收到与用户视觉框架上的退出、进入、单击、按下或释放组件相关的事件电位时,将通知 MouseListener 接口。
  4. 组件侦听器接口接收组件事件电位。 在这里,组件是指任何设计用于与用户交互的图形对象,例如按钮、复选框和滚动条。

类适配器和对象适配器的区别

为了保证功能性和灵活性,面向对象的编程(如 JAVA)为程序员提供了继承和组合等特性。 如果您尝试通过从另一个类继承其功能来重用特定代码,则您创建的子类将在整个程序的整个长度内保持依赖于父类。

在许多情况下,这使得系统变得越来越复杂且可测试性越来越差,并且使得在运行时交换功能变得非常困难。 在作文中,一个类只使用另一个类。 通过明确定义接口,进一步促进了两者之间的解耦。

因此,类适配器与对象适配器之间的争论可以解决如下。 类适配器使用继承,因此只能包装一个类。 它不能包装接口,因为根据定义,它必须派生自某个基类。 对象适配器使用组合,因此能够包装类和接口。 这主要是因为在组合中,每个类或接口都是私有的封装成员。

适配器类的优点

  1. 适配器类帮助不相关的类一起工作。
  2. 通过使用适配器类,可以以多种方式使用同一个类。
  3. 为用户提供了用于开发应用程序的可插拔套件选项。 因此,类的使用变得高度可重用。
  4. 它增强了类的透明度。
  5. 它提供了一种在类中包含相关模式的方法。

从世界顶级大学在线学习软件工程课程获得行政 PG 课程、高级证书课程或硕士课程,以加快您的职业生涯。

结论

通过本文,我们了解了 JAVA 中适配器类的机制、包含适配器类的三个主要包以及适配器类对程序员的好处。 适配器类是用于接收各种事件的抽象类,并作为创建侦听器对象的便利而存在。 凭借其不同的功能,适配器类为程序员提供了通过 Swing 方法进行创新的平台。

如果您想提高您的 Java 技能,您需要掌握这些 Java 项目。 如果您有兴趣了解有关 Java、全栈开发的更多信息,请查看 upGrad 和 IIIT-B 的全栈软件开发执行 PG 计划,该计划专为工作专业人士设计,提供 500 多个小时的严格培训,9+项目和任务、IIIT-B 校友身份、实用的实践顶点项目和顶级公司的工作协助。

Java中的适配器类是什么?

适配器类是使用适配器模式定义的类。 适配器可用于向现有类添加新功能,而无需修改原始类。 例如,java.util.Scanner 类来自 java.util 包。 Scanner 类无法从文件中读取,因为文件不是 InputStream。 为了从文件中读取,我们创建了一个适配器类,它接受 InputStream 作为参数并将处理后的数据作为对象返回。 适配器模式用于扩展现有类的功能,而无需以任何方式修改其代码。

Java中的设计模式是什么?

设计模式是软件设计中给定上下文中常见问题的通用可重用解决方案。 它不是可以直接转换为代码的完成设计。 它是关于如何解决问题的描述或模板,可以在许多不同的情况下使用。 在面向对象的编程中,设计模式是为简化软件系统的设计和实现而建立的约定。 Java中有几种设计模式。 不必从另一种语言中获取设计模式。 设计模式可以写成非常简单和简短的形式。

Java中最常用的设计模式是什么?

您会在 java 中找到许多设计模式。 最常用的设计模式是工厂模式。 它在企业开发中有很多应用。 它有助于消除对应用程序中具体类的依赖。 让我们举一个现实生活中的例子。 在电子商务应用程序中,您可能需要在测试和生产环境中创建用户对象。 用户类可能有许多子类,如 Admin、Shopkeeper、Seller、User 等。工厂模式中常见的 main 方法如下所示: public class UserFactory { public static Object create () { User user = createAdmin (); // 查看是否允许 admin 返回用户 ; // 返回当前用户 } }. 在这里查看用户类如何不依赖于具体类。 尽管它不是一个完整的示例,但它向您展示了工厂模式的工作原理。