如何在Java中实现适配器类

时间:2020-02-23 14:33:54  来源:igfitidea点击:

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型插座。
因此,可以得出结论,我们所携带的电器可能与我们在不同地方拥有的电气规格不兼容。
同样,适配器工具也是必不可少的,因为它们可以将不兼容的代码转换为兼容的代码。