咨询:代码场景是否为Adapter模式?确认对应设计模式名称
嗨,我来帮你理清这两个问题:
问题1:你的示例是否属于Adapter设计模式?
答案是不能。
Adapter设计模式的核心是解决接口不兼容的问题——比如有一个客户端期望使用接口X,但现有的类只实现了接口Y,这时候就需要一个适配器类,把Y的接口转换成X的接口,让两者能协同工作。
而你的代码里并没有涉及到不同接口之间的适配,只是通过抽象类给接口提供了空实现,所以完全不属于Adapter模式的应用场景。
问题2:接口+空实现抽象类的场景对应的设计模式
这个场景对应的是默认适配器模式(Default Adapter Pattern),它属于适配器模式的一种变体,也常被称为接口适配器模式。
这个模式的核心目的就是解决你遇到的问题:当一个接口定义了多个方法,但实现该接口的类只需要用到其中一部分方法时,我们可以先创建一个抽象类,实现该接口并为所有方法提供空的默认实现,之后子类只需要继承这个抽象类,覆盖自己需要的方法即可,不用强制实现所有接口方法。
你的代码正好完美契合这个模式:
AInterface是拥有多个方法的目标接口AAbstract是默认适配器类,实现了AInterface并给m1()、m2()提供了空实现Main作为子类,只覆盖了需要的m1()方法,不用处理m2()
对应的代码展示:
// 定义包含多个方法的接口 public interface AInterface { public void m1(); public void m2(); } // 默认适配器抽象类,提供空实现 public abstract class AAbstract implements AInterface { public void m1() { } public void m2() { } } // 子类仅覆盖需要的方法 public class Main extends AAbstract { @Override public void m1() { System.out.println("I am m1"); } public static void main(String[] args) { Main main = new Main(); main.m1(); } }
这个模式能极大地提升代码灵活性,避免了子类被迫实现不需要的方法的冗余情况。
内容的提问来源于stack exchange,提问作者Lokesh_K
相关产品推荐
相关产品推荐

