适配器模式✅

适配器模式常常被用在两个接口之间的转换上,这样就可以使得原本由于接口不兼容而不能一起工作的类可以一起工作。

适配器模式(Adapter)包含以下主要角色:

目标(Target)接口:当前系统业务所期待的接口,它可以是抽象类或接口。

适配者(Adaptee)类:它是被访问和适配的现存组件库中的组件接口。

适配器(Adapter)类:它是一个转换器,通过继承或引用适配者的对象,把适配者接口转换成

目标接口,让客户按目标接口的格式访问适配者。

一、实验要求

使用适配器模式实现家电通用案例。电视机使用两相插头,洗衣机使用三相插头。

现用新的三孔插座来使用电视机和洗衣机

二、代码✅

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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
TwoElectricOutlet.java
public interface TwoElectricOutlet{
public abstract void connectElectricCurrent();
}

ThreeElectricOutlet.java
public interface ThreeElectricOutlet{
public abstract void connectElectricCurrent();
}

TreeElectricAdapter.java
public class TreeElectricAdapter implements ThreeElectricOutlet{
TwoElectricOutlet outlet;
public TreeElectricAdapter(TwoElectricOutlet outlet){
this.outlet=outlet;
}
@Override
public void connectElectricCurrent(){
outlet.connectElectricCurrent();
}
}

Application.java
public class Application{
public static void main(String args[]){
ThreeElectricOutlet outlet; //目标接口(三相插座)
Wash wash=new Wash(); //洗衣机
outlet=wash; //洗衣机插在三相插座上
System.out.println("使用三相插座接通电流:");
outlet.connectElectricCurrent(); //接通电流,开始洗衣服
TV tv=new TV(); //电视机
TreeElectricAdapter adapter=new TreeElectricAdapter(tv);//把电视插在适配器上
outlet=adapter; //适配器插在三相插座上
System.out.println("使用三相插座接通电流:");
outlet.connectElectricCurrent(); //接通电流,开始播放电视节目
}
}


class Wash implements ThreeElectricOutlet{ //洗衣机使用三相插座
String name;
Wash(){
name="黄河洗衣机";
}
Wash(String s){
name=s;
}
public void connectElectricCurrent(){
turnOn();
}
public void turnOn(){
System.out.println(name+"开始洗衣物。");
}
}

class TV implements TwoElectricOutlet{ //电视机使用两相插座
String name;
TV(){
name="长江电视机";
}
TV(String s){
name=s;
}
public void connectElectricCurrent(){
turnOn();
}
public void turnOn(){
System.out.println(name+"开始播放节目。");
}
}

类图

适配器方法

代码结果

工厂方法

总结

这些都是基础的,不会的多多看前面文章.