设计模式-结构-适配器模式

适配器模式

1、模式类型: 结构型 2、定义:适配器模式(Adapter Pattern)

将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。其别名为包装器(Wrapper) 3、适配器分三类:

0
1
2
类适配器模式、
对象适配器模式、
接口适配器模式

4、工作原理

0
1
2
3
1) 适配器模式:将一个类的接口转换成另一种接口.让原本接口不兼容的类可以兼容
2) 从用户的角度看不到被适配者,是解耦的
3) 用户调用适配器转化出来的目标接口方法,适配器再调用被适配者的相关接口方法
4) 用户收到反馈结果,感觉只是和目标接口交互,如图

原理uml图

实例:

 0
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
//类适配器
public class Client {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Phone phone = new Phone();
		phone.charging(new VoltageAdapter());
	}
}


public class Phone {
	public void charging(IVoltage5V iVoltage5V) {
		if(iVoltage5V.output5V() == 5) {
			System.out.println("V5~~");
		} else if (iVoltage5V.output5V() > 5) {
			System.out.println("220~~");
		}
	}
}



public interface IVoltage5V {
	public int output5V();
}

public class Voltage220V {
	//220V
	public int output220V() {
		int src = 220;
		System.out.println("Voltage220V=" + src);
		return src;
	}
}

public class VoltageAdapter extends Voltage220V implements IVoltage5V {

	@Override
	public int output5V() {
		// TODO Auto-generated method stub
		int srcV = output220V();
		int dstV = srcV / 44 ; 
		return dstV;
	}

}

应用场景

0
1
2
3
4
1 封装有缺陷的接口设计
2 统一多个类的接口设计
3 替换依赖的外部系统
4 兼容老版本接口
5 适配不同格式的数据

参考资料

设计模式资料
常用结构性模型

设计模式-视频讲解

设计模式-原则

comments powered by Disqus
真实 | 独立 | 有趣
联系 Justkids