如何在Java中实现适配器类
Java中的适配器类是一个非常有趣的主题,每个人都必须了解。
适配器类简介
适配器类提供侦听器接口的实现。
当我们继承所有方法的适配器类实现时不强制。
因此保存了编写多余的代码。
这些适配器类可以在java.awt.event,java.awt.dnd和javax.swing.event软件包中找到。
下面给出具有相应侦听器接口的一些公共适配器类。
java.awt.Event.
java.awt.dnd.
javax.swing.Event.
java.awt.Event.
|||
| --- - | --- |
| 适配器类别 | Listener 接口|
| WindowAdapter | WindowListener |
| KeyAdapter | Keylistener |
| mouseadapter | MousElistener |
| MouseMotionAdapter | MouseMotionListener |
| FocusAdapter | FocusListener|
| compentsadapter | ComponentListener |
| contertonapapter| ContainerListener |
| hierarchyboundsadapter | HierarchyBoundsListener |
java.awt.dnd
|||
| --- - | --- |
| 适配器类别 | Listener 接口|
| Dragsourceadapter | adrsourcelistener |
| dragtargetAdapter | dragtargetlistener |
javax.swing.event
|||
| --- - | --- |
| 适配器类别 | Listener 接口|
| MouseInputAdapter | MouseInputListener |
| InternalFrameAdapter | InternalFrameListener|
Java鼠标适配器
import java.awt.*; import java.awt.event.*; public class MouseAdapterExample extends MouseAdapter{ Frame f; MouseAdapterExample(){ f=new Frame("Mouse Adapter"); f.addMouseListener(this); f.setSize(300,300); f.setLayout(null); f.setVisible(true); } public void mouseClicked(MouseEvent e) { Graphics g=f.getGraphics(); g.setColor(Color.BLUE); g.fillOval(e.getX(),e.getY(),30,30); } public static void main(String[] args) { new MouseAdapterExample(); } }
Java MouseMotionAdapter
import java.awt.*; import java.awt.event.*; public class MouseMotionAdapterExample extends MouseMotionAdapter{ Frame f; MouseMotionAdapterExample(){ f=new Frame("Mouse Motion Adapter"); f.addMouseMotionListener(this); f.setSize(300,300); f.setLayout(null); f.setVisible(true); } public void mouseDragged(MouseEvent e) { Graphics g=f.getGraphics(); g.setColor(Color.ORANGE); g.fillOval(e.getX(),e.getY(),20,20); } public static void main(String[] args) { new MouseMotionAdapterExample(); } }
Java KeyAdapter类
import java.awt.*; import java.awt.event.*; public class KeyAdapterExample extends KeyAdapter{ Label l; TextArea area; Frame f; KeyAdapterExample(){ f=new Frame("Key Adapter"); l=new Label(); l.setBounds(20,50,200,20); area=new TextArea(); area.setBounds(20,80,300, 300); area.addKeyListener(this); f.add(l);f.add(area); f.setSize(400,400); f.setLayout(null); f.setVisible(true); } public void keyReleased(KeyEvent e) { String text=area.getText(); String words[]=text.split("\s"); l.setText("Words: "+words.length+" Characters:"+text.length()); } public static void main(String[] args) { new KeyAdapterExample(); } }
适配器类的优点
它帮助无关的类一起工作,并提供了一种以多种方式使用类的方法。
它可以增加类的透明度。
适配器类提供了一种在类中包括相关模式的方法。
为用户提供了用于开发应用程序的可插拔套件的选项。
因此,类的使用变得高度可重用。
适配器设计模式
适配器设计模式是一种结构设计模式,它允许两个不同的接口一起工作。
适配器模式能够使两个不兼容的接口兼容,而无需更改其现有代码。
相应的接口可能不兼容,但内部功能应符合要求。
通常使适配器模式适合其他人使用的现有类,而无需修改其源代码。
此外,它们使用单个类来加入独立或者不兼容接口的功能。
适配器模式的另一个名称称为包装器,例如:它是与装饰器设计模式共享的替代名称。
该模式还将类的不兼容接口转换为仅是目标的不同接口。
这是客户最终需要的。
适配器模式还可以让类一起工作,否则接口一起工作几乎是不兼容的。
为了使事情更直观,请考虑一个经常用笔记本电脑和手机去不同国家旅行的人。
在不同国家/地区测量的电源插座,电压和频率不同,这使得使用一个国家/地区的任何设备在不同国家/地区兼容。
在英国,通常使用230伏和50 Hz频率的G型插座。
在美国,使用具有120伏特和60 Hz频率的A型和B型插座。
在旧金山,使用C型,D型和M型插座(230伏和50赫兹)。
最后,在日本,使用110伏特和50 Hz频率的A型和B型插座。
因此,可以得出结论,我们所携带的电器可能与我们在不同地方拥有的电气规格不兼容。
同样,适配器工具也是必不可少的,因为它们可以将不兼容的代码转换为兼容的代码。