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

适配器模式:

可以理解为两个不兼容接口之间转换的桥梁,可以理解为转换器。

举个例子: 现在常用的充电器接口 有 USB 和 Type C 两种。现在要给USB 接口手机充电,但是只有TypeC接口的充电线。如果要给手机通过TypeC 充电线充电,得需要一个TypeC转Usb接口的转换器。 这个转换器既可以理解成适配器

先定义两个不同类型的充电器接口:TypeCCharger 和 UsbCharger

1
2
3
4
5
6
7
8
9
10
11
12
13
14
/**
* Type-C 充电器 接口
*/
public interface TypeCCharger {
//TypeC 充电
void typeCCharge();
}
/**
* Usb 充电器 接口
*/
public interface UsbCharger {
//usb 充电
void usbCharge();
}

创建对应的实现类:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/**
* Type C 手机充电
*/
public class TypeCMobile implements TypeCCharger {
@Override
public void typeCCharge() {
System.out.println("typeC 充电器充电。。。");
}
}



/**
* Usb 手机充电
*/
public class UsbMobile implements UsbCharger {

@Override
public void usbCharge() {
System.out.println("usb 充电器充电。。。");
}
}

现有一部Usb手机和一条TypeC的充电线,如果要完成充电的话,则需要一个转换器

给USB手机创建一个TypeC的适配器: 代码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/**
* 给Usb手机创建Type C的适配器
*/
public class TypeCAdapter implements TypeCCharger {

UsbMobile usb ;
//创建Typec 构造,参数为UsbMobile
public TypeCAdapter(UsbMobile usb){
this.usb = usb;
}

//再TypeC的实现中调用 usb对应的方法
//完成转换作用
@Override
public void typeCCharge() {
usb.usbCharge();
}
}

测试类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class Test {


public static void main(String[] args) {


UsbMobile usbMobile = new UsbMobile();
System.out.println("...........有USB充电线的情况...............");
// 有 usb充电器的情况
usbMobile.usbCharge();
System.out.println("...........没USB,但又TypeC充电线的情况......");
//没有usb充电器 只有 typec 充电器 需要一个转化器
TypeCAdapter adapter = new TypeCAdapter(usbMobile);
adapter.typeCCharge();
}
}

结果

1
2
3
4
5
6
7
 
结果:
...........有USB充电线的情况...............
usb 充电器充电。。。

...........没USB,但又TypeC充电线的情况......
usb 充电器充电。。。

设计模式-----适配器模式
http://yoursite.com/post/1929d26c.html/
Author
Chase Wang
Posted on
August 26, 2018
Licensed under