适配器模式

标签:java设计模式—–实验楼


[TOC]
[实验楼文档—-适配器模式][1]

什么是适配器模式

适配器模式(Adapter pattern)就是用来适配的,当你想使用一个已有的类,但是这个类的接口跟你的不一样,同时又不能直接拿来用,这个时候就需要一个适配器来帮忙,
生活化的例子就是你在香港买了港版的iphone6,充电器的擦回头拿回家一看,不能使用。这个时候就需要一个转接头适配器。

适配器模式示例代码

//英标接口
public interface EnPluginInterface {

    void chargeWith3Pin();// 三头插座

}
//英标插座
public class EnPlugin implements EnPluginInterface {
    public void chargeWith3Pin()

    {
        System.out.println("charge with EnPlugin");
    }
}
//家类,实现插座充电,待会儿我们使用适配的时候,只需将charge()重载为国标充电
public class Home {
    private EnPluginInterface enPlugin;

    public Home() {
        // TODO Auto-generated constructor stub
    }

    public Home(EnPluginInterface enPlugin) {
        this.enPlugin = enPlugin;
    }

    public void setPlugin(EnPluginInterface enPlugin) {
        this.enPlugin = enPlugin;
    }

    public void charge() {
        enPlugin.chargeWith3Pin();
    }
}
//英标充电的Test类
public class Test {
    public static void main(String[] args) {
        EnPluginInterface enPlugin = new EnPlugin();//新建一个英国插座
        Home home = new Home(enPlugin);//在家里面充电
    }
}
//问题的关键在于我们回国了,国内的插座标准是双孔,我们既要使用转换器了
//转换器肯定是必须的,但是转换器的结果是使用双孔,因此我们要实现一个双孔的插座
//国标插座接口,接口中的未定义方法是给子类实现的,基本上就是写完了
public interface CnPluginInterface {
    void chargeWith2Pin();
}
//国标插座实现
public class CnPlugin implements CnPluginInterface {
    @Override
    public void chargeWith2Pin() {
        // TODO Auto-generated method stub
        System.out.println("charge with 2 pins");

    }
}
//适配器(转换器)实现,去实现英标接口,但是重载国标的方法,这里面包含另一个累的对象,才能完成重载操作,可以说这简单的三步走是所适配的根本套路。所有适配器都是按照这个来的
public class PluginAdapter implements EnPluginInterface {
    private CnPluginInterface cnPlugin;

    public PluginAdapter(CnPluginInterface cnPlugin) { //传进来
        this.cnPlugin = cnPlugin;
    }

    @Override
    public void chargeWith3Pin() {
        // TODO Auto-generated method stub
        cnPlugin.chargeWith2Pin();//丢出去

    }

}
//适配器测试(也是进行适配流程的演示,最简单的操作,基本流程)
public class TestAdapter {
    public static void main(String[] args) {
        CnPluginInterface cnPlugin = new CnPlugin();//准备数据源
        Home home = new Home();
        PluginAdapter pluginadapter = new PluginAdapter(cnPlugin);//准备适配器
        home.setPlugin(pluginadapter);//适配,虽然方法中这个参数是EnPluginIntergin
        home.charge();//终于能充电了
    }
}

恰好应了适配器模式的定义,我的手机充电器就是我想用的已有的类,但是这个类接口又和我的插座不一样,不能直接使用,这个时候就需要一个转换器(适配器),可能是已有的类很重要,一点不能丢,,哈哈哈,舍不得呀

适配器模式的应用

主要作用就是在旧的接口,新的接口之间完成适配
比如说安卓在listView中的适配器,原来只是一个模式呀,。在这里使用,真的是厚积薄发

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值