适配器设计模式
设计模式 (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.
总结:
-
当一个接口中抽象方法过多, 但是我只要使用其中一部分的时候, 就可以适配器设计模式.
-
书写步骤:
-
编写中间类 XXXAdapter, 实现对应的接口.
-
对接口中的抽象方法进行空实现.
-
让真正的实现类继承中间类, 并重写需要用的方法.
-
为了避免其他类创建适配器类的对象, 中间的适配器类用 abstract 进行修饰.
-
-
如果这个真正的实现类, 即继承中间类 (即适配器) 的这个最终的实现类还有别的父类, 而 Java 不允许多继承, 怎么办呢? 可以让这个中间类, 即适配器去继承这个父类.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术