适配器模式 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的主要内容,如果未能解决你的问题,请参考以下文章

设计模式之Adapter(适配器)(转)

Java读源代码学设计模式:适配器Adapter

设计模式之适配器模式 Adapter

结构型设计模式 Structural Patterns :适配器 Adapter(Python 实现)

设计模式完结--适配器模式(adapter pattern)

适配模式(Adapter)