适配器模式

适配器的目的和装饰有点类似,装饰对目标类的方法进行扩展,而适配器则是将不同的类进行转化,转化即引用不变但改变具体的实现,我们可以使用继承。


1、北京人的信息

public class BeiJingPerson {

    public String getName() {
        return "张三";
    }

    public String getSex(){
        return "男";
    }

    public String getPhone(){
        return "0105534232";
    }

}


2、上海人的信息

public class ShangHaiPerson {

    public Map<String, String> getPerson() {
        Map<String, String> map = new HashMap<>();
        map.put("姓名", "Tonny");
        map.put("性别", "男");
        map.put("电话", "0003322002");
        return map;
    }
}



3、某天这个上海人要来北京了,入乡随俗,按照北京人的方式表示信息

public class BeiJingPersonAdapter extends BeiJingPerson {

    private ShangHaiPerson shangHaiPerson;
    private Map<String, String> map;

    public BeiJingPersonAdapter(ShangHaiPerson shangHaiPerson) {
        this.shangHaiPerson = shangHaiPerson;
        this.map = shangHaiPerson.getPerson();
    }

    @Override
    public String getName() {
        return map.get("姓名");
    }

    @Override
    public String getSex() {
        return map.get("性别");
    }

    @Override
    public String getPhone() {
        return map.get("电话");
    }
}


4、输出看看

public class Client {

    public static void main(String[] args) {
        BeiJingPerson person = new BeiJingPersonAdapter(new ShangHaiPerson());
        System.out.println(person.getName());
        System.out.println(person.getPhone());
        System.out.println(person.getSex());
    }
}

Tonny
0003322002

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值