适配器模式 adapter
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了适配器模式 adapter相关的知识,希望对你有一定的参考价值。
一个系统 要使用另一个系统的 数据源 ,但 数据源 格式 不符合自己的需求, 这种情况可以采用 适配器模式
一个例子:人事系统 提供 的 数据 返回的 是 Map类型,但是 财务系统 需要的 是 List 类型的数据
人事系统提供的 数据源:
1 import java.util.HashMap; 2 import java.util.Map; 3 4 public class People { 5 public Map<Object, Object> getOrgName() { 6 Map<Object, Object> map = new HashMap<>(); 7 map.put(1, "人事处"); 8 map.put(2, "行政处"); 9 map.put(3, "财务处"); 10 return map; 11 } 12 }
人事系统中的调用方式:
1 import java.util.Map; 2 3 public class PClient { 4 5 public static void main(String[] args) { 6 People people = new People(); 7 Map<Object, Object> map = people.getOrgName(); 8 for (int i = 0; i < map.size(); i++) { 9 System.out.println(map.get(i + 1)); 10 } 11 12 } 13 14 }
财务系统使用数据源 适配器:
1 import java.util.ArrayList; 2 import java.util.Map; 3 4 public class PeopleAdapter extends ArrayList<Object> { 5 private Map<?, ?> map; 6 7 public PeopleAdapter(Map<?, ?> map) { 8 super(); 9 this.map = map; 10 } 11 12 public int size() { 13 return map.size(); 14 } 15 16 public Object get(int i) { 17 return map.get(i); 18 } 19 }
财务系统调用:
1 public class EClient { 2 3 public static void main(String[] args) { 4 PeopleAdapter list = new PeopleAdapter(new People().getOrgName()); 5 for (int i = 0; i < list.size(); i++) { 6 System.out.println(list.get(i + 1)); 7 } 8 } 9 10 }
以上是关于适配器模式 adapter的主要内容,如果未能解决你的问题,请参考以下文章
结构型设计模式 Structural Patterns :适配器 Adapter(Python 实现)