这里是一个最简单的适配器例子,若接口中抽象方法很多,而子类中又用不到这么多,可以设计一个抽象类作为适配器,它实现接口中的方法(方法体为空),则以后的子类直接继承此抽象类,可有选择的重写所需要的方法。
interface Window{
public void open();
public void close();
public void activated();
public void iconified();
public void deiconified();
}
abstract class WindowAdapter implements Window{//适配器抽象类
public void open(){}
public void close(){}
public void activated(){}
public void iconified(){}
public void deiconified(){}
}
class WindowImpl extends WindowAdapter{//子类
public void open(){
System.out.println("窗户打开。");
}
public void close(){
System.out.println("窗户关闭。");
}
}
public class AdapterDemo{
public static void main(String args[]){
Window win=new WindowImpl();
win.open();
win.close();
}
}
运行结果:
以上代码因为采用了适配器这个中间环节,所以子类就不用实现接口中的全部方法,而是有选择的实现所需方法。
ps:在图形界面编程的事件处理中经常使用此设计模式。