设计模式读书笔记-适配器模式

2016-08-21
读书笔记
  • 定义:将一个类的接口变换成客户端期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的2个类能够在一起工作。
  • Adapter继承待转换类,实现目的接口
  • 代码:
public interface IUserInfo {

    public String getUserName();
    public String getUserAddress();
    public String getUserTel();
    public String getPosition();

}



public class UserInfo implements IUserInfo{

    public String getUserName() {
        System.out.println("获取最终格式的用户名称");
        return null;
    }

    public String getUserAddress() {
        System.out.println("获取最终格式的用户地址");
        return null;
    }

    public String getUserTel() {
        System.out.println("获取最终格式的用户电话");
        return null;
    }

    public String getPosition() {
        System.out.println("获取最终格式的用户职位");
        return null;
    }
}



public interface IOuterUserInfo {
    public Map getUserBaseInfo();
    public Map getUserWorkInfo();
}



public class OuterUserInfo implements IOuterUserInfo{

    public Map getUserBaseInfo() {
        Map baseInfoMap = new HashMap();
        baseInfoMap.put("outUserName", "待转换的用户名称");
        baseInfoMap.put("outUserAddress", "待转换的用户地址");
        baseInfoMap.put("outUserTel", "待转换的用户电话");
        return baseInfoMap;
    }

    public Map getUserWorkInfo() {
        Map workInfoMap = new HashMap();
        workInfoMap.put("outUserPosition", "待转换的用户职位");
        return workInfoMap;
    }
}



public class Adapter extends OuterUserInfo implements IUserInfo{

    private Map outUserBaseInfo = super.getUserBaseInfo();
    private Map outUserWorkInfo = super.getUserWorkInfo();



    public String getUserName() {
        String userName = (String)outUserBaseInfo.get("outUserName");
        System.out.println(userName);
        return null;
    }

    public String getUserAddress() {
        String userAddress = (String)outUserBaseInfo.get("outUserAddress");
        System.out.println(userAddress);
        return null;
    }

    public String getUserTel() {
        String userTel = (String)outUserBaseInfo.get("outUserTel");
        System.out.println(userTel);
        return null;
    }

    public String getPosition() {
        String userPosition = (String)outUserWorkInfo.get("outUserPosition");
        System.out.println(userPosition);
        return null;
    }
}



public class Client {//适配器要继承待转换类,实现目的接口

    public static void main(String[] args){
        IUserInfo convertedUser = new Adapter();
        convertedUser.getUserName();
        convertedUser.getUserAddress();
        convertedUser.getUserTel();
        convertedUser.getPosition();
    }

}

Kommentare: