设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解解、保证代码可靠性、程序的重用性。
简单理解:设计模式就是各种套路。
适配器设计模式:解决接口与接口实现类之间的矛盾问题
如果一个接口有很多个方法,但是某一个实现只需要使用到其中的某一个方法,那么根据接口的语法,这个实现必须重写这个接口的所有方法。这将导致代码维护和阅读很麻烦。于是就有了适配器这个设计模式。
适配器是一个类,实现这个接口,重写全部方法,但是所有方法都是空实现,即全部重写了,但是全部都是空着的,没有方法体。
再定义实现的时候,就不要去实现这个接口了,而是继承这个适配器,然后在类中,要用到哪个方法就重写那一个方法就可以了。
适配器的所有方法都是空实现,因此建立适配器的对象是没有任何意义的,因此将适配器定义为抽象的,即用 abstract 来修饰,目的就是不让外界来创建它的对象。
接口:
package demo6;
public interface Inter {
public abstract void method1();
public abstract void method2();
public abstract void method3();
public abstract void method4();
public abstract void method5();
public abstract void method6();
public abstract void method7();
public abstract void method8();
public abstract void method9();
public abstract void method10();
}
适配器:
package demo6;
public abstract class InterAdapter implements Inter { // 定义为抽象类, 不让外界实例化这个类
@Override
public void method1() {
}
@Override
public void method2() {
}
@Override
public void method3() {
}
@Override
public void method4() {
}
@Override
public void method5() {
}
@Override
public void method6() {
}
@Override
public void method7() {
}
@Override
public void method8() {
}
@Override
public void method9() {
}
@Override
public void method10() {
}
}
类:
package demo6;
public class InterImpl extends InterAdapter {
@Override
public void method5() {
System.out.println("重写method5。");
}
}
总结:
-
当一个接口中抽象方法过多,但是我只要使用其中一部分的时候,就可以适配器设计模式。
-
书写步骤:
-
编写中间类 XXXAdapter,实现对应的接口。
-
对接口中的抽象方法进行空实现。
-
让真正的实现类继承中间类,并重写需要用的方法。
-
为了避免其他类创建适配器类的对象,中间的适配器类用 abstract 进行修饰。
-
-
如果继承中间类的类还有别的父类, 而 Java 不允许多继承, 怎么办呢? 可以让这个中间类, 即适配器去继承这个父类.