如果一个类要实现一个具有很多抽象方法的接口,但是本身只需要实现接口中的部分方法便可以达成目的,所以此时就需要一个中间的过渡类,但此过渡类又不希望直接使用,所以将此类定义为抽象类最为合适,再让以后的子类直接继承该抽象类便可选择性的覆写所需要的方法,而此抽象类便是适配器类。
看一下类图:
这个很好理解,在实际开发中,我们也常会遇到这种接口中定义了太多的方法,以致于有时我们在一些实现类中并不是都需要。看代码:
public interface Sourceable {
public void method1();
public void method2();
public void method3();
}
public abstract class Wrapper implements Sourceable{
public void method1(){}
public void method2(){}
}
public class SourceSub1 extends Wrapper {
public void method1(){
System.out.println("the sourceable interface's first Sub1!");
}
public void method3(){ }
}
public class SourceSub2 extends Wrapper {
public void method2(){
System.out.println("the sourceable interface's second Sub2!");
}
public void method3(){ }
}
public class WrapperDemo {
public static void main(String[] args) {
Sourceable source1 = new SourceSub1();
Sourceable source2 = new SourceSub2();
source1.method1();
source1.method2();
source1.method3();
source2.method1();
source2.method2();
source2.method3();
}
}
测试输出:
the sourceable interface’s first Sub1!
the sourceable interface’s second Sub2!