适配器设计模式

设计模式 (Design pattern) 是一套被反复使用, 多数人知晓的, 经过分类编目的代码设计经验的总结. 使用设计模式是为了可重用代码, 让代码更容易被他人理解解, 保证代码可靠性, 程序的重用性.

简单理解: 设计模式就是各种套路.

适配器设计模式: 解决接口与接口实现类之间的矛盾问题.

如果一个接口有很多个方法, 但是某一个实现只需要使用到其中的某一个方法, 那么根据接口的语法, 这个实现必须重写这个接口的所有方法. 这将导致代码维护和阅读很麻烦. 于是就有了适配器这个设计模式.

适配器是一个类, 实现这个接口, 重写全部方法, 但是所有方法都是空实现, 即全部重写了, 但是全部都是空着的, 没有方法体 方法体都是空的.

再定义实现的时候, 就不要去实现这个接口了, 而是继承这个适配器, 然后在类中, 要用到哪个方法就重写那一个方法就可以了.

适配器的所有方法都是空实现, 因此建立适配器的对象是没有任何意义的, 因此将适配器定义为抽象的, 即用 abstract 来修饰, 目的就是不让外界来创建它的对象.

接口:

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();
}

适配器:

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() {
}
}

Javabean 类:

public class InterImpl extends InterAdapter {
@Override
public void method5() {
System.out.println("重写了适配器的 method5.");
}
}

测试类:

public class Test {
public static void main(String[] args) {
InterImpl imp = new InterImpl();
imp.method5();
}
}

执行结果:

重写了适配器的 method5.

总结:

  1. 当一个接口中抽象方法过多, 但是我只要使用其中一部分的时候, 就可以适配器设计模式.

  2. 书写步骤:

    1. 编写中间类 XXXAdapter, 实现对应的接口.

    2. 对接口中的抽象方法进行空实现.

    3. 让真正的实现类继承中间类, 并重写需要用的方法.

    4. 为了避免其他类创建适配器类的对象, 中间的适配器类用 abstract 进行修饰.

  3. 如果这个真正的实现类, 即继承中间类 (即适配器) 的这个最终的实现类还有别的父类, 而 Java 不允许多继承, 怎么办呢? 可以让这个中间类, 即适配器去继承这个父类.

posted @   有空  阅读(18)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示