hooyantsing's Blog

P61 类适配器-电压问题

字数统计: 270阅读时长: 1 min
2020/11/09

尚硅谷Java设计模式(图解+框架源码剖析)

类适配器模式

介绍

Adapter类,通过继承src类,实现dst类接口,完成src->dst的适配。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
classDiagram
class Voltage220V{
+output220V() void
}
class Voltage5V{
<<Interface>>
+output5V() void
}
class VoltageAdapter
class Phone{
+charging() void
}
Voltage220V <|-- VoltageAdapter
Voltage5V <|.. VoltageAdapter
Voltage5V <.. Phone
角色
  • 被适配类:某个类的方法提供的值不符合需求
  • 符合需求的接口
  • 适配类:继承”被适配类“,实现”符合需求的接口“

被适配类

1
2
3
4
5
6
7
8
public class Voltage220V {
// 输出220V
public int output220V(){
int src = 220;
System.out.println("电压" + src);
return src;
}
}

符合需求的接口

1
2
3
public interface IVoltage5V {
public int output5V();
}

适配类

1
2
3
4
5
6
7
8
public class VoltageAdapter extends Voltage220V implements IVoltage5V {
@Override
public int output5V() {
int srcV = output220V();
int dstV = srcV / 44;
return dstV;
}
}

需求

1
2
3
4
5
6
7
8
9
public class Phone {
public void charging(IVoltage5V iVoltage5V){
if (iVoltage5V.output5V() == 5){
System.out.println("电压为5V");
} else {
System.out.println("电压非5V");
}
}
}

测试

1
2
3
4
5
6
7
public class Client {
public static void main(String[] args) {
System.out.println("===== 类适配器模式 =====");
Phone phone = new Phone();
phone.charging(new VoltageAdapter());
}
}
CATALOG
  1. 1. 类适配器模式
    1. 1.1. 介绍
    2. 1.2. 角色