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