- 定义:将一个类的接口变换成客户端期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的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();
}
}