Java设计模式之适配器模式

什么是适配器模式

当你想使用一个类的时候,但是这个类的接口跟你又不一样,不能拿来直接用,这个时候就需要一个适配器来帮你了。

适配器类图

Class: void setPlugin(cnPlugin:CnPluginInterface); void charge();
Interface: CnPluginInterface -> void chargeWith2Pins();
Class: CnPlugin -> void chargeWith2Pins();
Class: PluginAdapter -> enPlugin: EnPluginInterface; void chargeWith2Pins();
Interface: EnPluginInterface -> void chargeWith3Pins();
Class: EnPlugin -> void chargeWith3Pins();

示例代码

public interface CnPluginInterface {
    void chargeWith2Pins();
}
public class CnPlugin implements CnPluginInterface{

    @Override
    public void chargeWith2Pins() {
        System.out.println("charge with CnPlugin");
    }
}
public class Home {
    private CnPluginInterface cnPlugin;
    
    public Home() {
        
    }
    
    public Home(CnPluginInterface cnPlugin) {
        this.cnPlugin = cnPlugin;
    }
    
    public void setPlugin(CnPluginInterface cnPlugin) {
        this.cnPlugin = cnPlugin;
    }
    
    public void charge() {
        cnPlugin.chargeWith2Pins();
    }

}
public class CnTest {
    public static void main(String[] args) {
        CnPluginInterface cnPlugin = new CnPlugin();
        Home home = new Home(cnPlugin);
        home.charge();
        
        EnPluginInterface enPlugin = new EnPlugin();
        Home home1 = new Home();
        PluginAdapter pluginAdapter = new PluginAdapter(enPlugin);
        home1.setPlugin(pluginAdapter);
        home1.charge();
    }

}

1.适配器必须实现原有的旧的接口
2.适配器对象中持有对新接口的引用, 当调用旧接口时,将这个调用委托给实现新接口的对象来处理,也就是在适配器对象中组合一个新接口。

public interface EnPluginInterface {
    void chargeWith3Pins();
}
public class EnPlugin implements EnPluginInterface{

    @Override
    public void chargeWith3Pins() {
        System.out.println("charge with EnPlugin");
    }
}
public class PluginAdapter implements CnPluginInterface{
    private EnPluginInterface enPlugin;

    @Override
    public void chargeWith2Pins() {
        enPlugin.chargeWith3Pins();
    }
    
    public PluginAdapter(EnPluginInterface enPlugin) {
        this.enPlugin = enPlugin;
    }

}

运行结果:

适配器模式.png

适配器模式的应用

只要就是在旧的接口、新的接口之间完成适配。
适配器模式的三个特点:

  • 适配器对象实现原有接口
  • 适配器对象组合一个实现新接口的对象(这个对象也可以不实现一个对象,只是一个单纯的对象)
  • 对适配器原有接口方法的调用委托给新接口的实例的特定方法

适配器模式到此结束

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容