使用适配器(adapter)类,最主要的一个目的,就是实现java对监听接口(接口含有多个方法)的需求,通过扩展适配器来指定对某些动作响应,不用实现接口的每一个方法,从而简化代码量。
例如:WindowListener接口:
public interface WindowListener
{
void windowOpened(WindowEvent e);
void windowClosing(WindowEvent e);
void windowClosed(WindowEvent e);
void windowIconified(WindowEvent e);
void windowDeiconified(WindowEvent e);
void windowActivated(WindowEvent e);
void windowDeactivated(WindowEvent e);
}
调用其中某一个方法,其余的都不做修改。定义一个使用WindowListener的扩展类(Terminator):
Class Terminator impements WindowListener{
public void windowClosing(WindowEvenr e){
System.exit(0);
}
void windowOpened(WindowEvent e);
void windowClosed(WindowEvent e);
void windowIconified(WindowEvent e);
void windowDeiconified(WindowEvent e);
void windowActivated(WindowEvent e);
void windowDeactivated(WindowEvent e);
}
进一步Terminator可以注册为事件监听器:
WindowListener lisener = new Terminator();
frame.addWindowLisener(lisener);
总体过程如下图:
又或者可以之间将监听器定义为框架的匿名内部类,简化代码量:
frame.addWindowLisener(new WindoqAdapter(){
WindowAdapter(){
public void windowClosing(WindowEvenr e){
System.exit(0);
}
}
});
[Java2核心技术(7th,卷1)第三版].霍斯特曼