设计模式13——适配器模式

 一、适配器模式的定义 

Convert the interface of a class into another interface clients expect.Adapter lets classes work together that couldn't otherwise because of incompatible interfaces.(将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。)

二、适配器模式的应用
1、适配器模式的优点

适配器模式可以让两个没有任何关系的类在一起运行,只要适配器这个角色能够搞定他们就成。
增加了类的透明性,提高了类的复用度  灵活性非常好
 

2、适配器模式的缺点 

与类适配器模式相比,要想置换适配者类的方法就不容易

3.适配器模式的使用场景。

  适配器应用的场景只要记住一点就足够了:你有动机修改一个已经投产中的接口时,适配器模式可能是最适合你的模式。比如系统扩展了,需要使用一个已有或新建立的类,但这个类又不符合系统的接口

三、适配器模式的实现


public interface IUserInfo {
    //获取名字
    public String getNameById(Integer id);
    //根据名字获取地址
    public String  getAddressBydName(String name);
}


public interface IUserInfo {
    //获取名字
    public String getNameById(Integer id);
    //根据名字获取地址
    public String  getAddressBydName(String name);
}



public interface OutUserInfo {
    //根据id获取用户名
    public Map<String, String> getNameById(String id);
    //根据用户名获取地址
    public Map<String, String> getAddressByName(String name);
}



public interface OutUserInfo {
    //根据id获取用户名
    public Map<String, String> getNameById(String id);
    //根据用户名获取地址
    public Map<String, String> getAddressByName(String name);
}


public class UserInfoAdapter extends OutUserInfoimpl implements IUserInfo{

    @Override
    public String getNameById(Integer id) {
        //转换适配
        Map<String, String> map=super.getNameById(String.valueOf(id));
        //获取名字
        String name=map.get(String.valueOf(id));
        return name;
    }

    @Override
    public String getAddressBydName(String name) {
        //转换适配
        Map<String, String> map=super.getAddressByName(name);
        //获取地址
        String address=map.get(name);
        return address;
    }


}



四、适配器模式在源码中的应用

Android源码中的适配器模式,典型的就是ListView、GridVIew、RecyclerView

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值