一、类适配器模式
基本介绍:
Adapter类、通过继承 src 类、实现 dst 类接口,完成 src -> dst的适配。
二、类适配器应用实例
1、应用实例说明
以生活充电器的例子来学习适配器,充电器本身相当于 Adapter,220V 交流电相当于 src(即被适配者),我们的目的 dst(目标)是 5V 直流电。
2、思路分析
3、代码实现
src 类:
1 /**
2 * 被适配的类
3 */
4 public class Voltage220V {
5
6 /**
7 * 输出 220V 的电压
8 * @return
9 */
10 public int output220V() {
11 int src = 220;
12 System.out.println("电压=" + src + "伏");
13 return src;
14 }
15 }
适配接口:
1 /**
2 * 适配接口
3 */
4 public interface IVoltage5V {
5
6 /**
7 * 输出 5V 电压
8 * @return
9 */
10 public int output5V();
11 }
Adapter 适配器类:
1 /**
2 * 适配器 类
3 */
4 public class VoltageAdapter extends Voltage220V implements IVoltage5V{
5 @Override
6 public int output5V() {
7 //获取到 220V 电压
8 int srcV = output220V();
9 //降压,转成 5V
10 int destV = srcV / 44;
11
12 return destV;
13 }
14 }
使用端:
1 public class Phone {
2
3 /**
4 * 充电
5 * @param voltage5V
6 */
7 public void charging(IVoltage5V voltage5V) {
8 if (voltage5V.output5V() == 5) {
9 System.out.println("电压为5伏特,可以充电~~");
10 } else if (voltage5V.output5V() > 5) {
11 System.out.println("电压过高,无法充电~~");
12 }
13 }
14 }
15 -----------------------------------------------
16 /**
17 * 类适配器 测试
18 */
19 public class Client {
20 public static void main(String[] args) {
21 System.out.println("~~~类适配器模式~~~");
22 Phone phone = new Phone();
23 phone.charging(new VoltageAdapter());
24 }
25 }
三、类适配器模式注意事项和细节
1、Java 是单继承机制,所以类适配器需要继承 src 类这一点算是一个缺点,因为这要 dst 必须是接口,有一定局限性;
2、src 类的 方法在 Adapter 中都会暴露出来,也增加了使用的成本;
3、由于其继承了 src 类,所以它可以根据需求重写 src 类的方法,使得 Adapter 的灵活性增强了。