相关文章
【合集】Java设计模式
应用
对象适配器{@link InputStreamReader}实现Reader,并且组合了实现了Reader的StreamDecoder
原始功能
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
public interface SDCard {
void readSD();
void writeSD(String msg);
}
public static class SDCardImpl implements SDCard {
@Override
public void readSD() {
System.out.println("readSD");
}
@Override
public void writeSD(String msg) {
System.out.println("writeSD");
}
}
|
需要适配的功能
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
public interface TFCard {
void readTF();
void writeTF(String msg);
}
public static class TFCardImpl implements TFCard {
@Override
public void readTF() {
System.out.println("readTF");
}
@Override
public void writeTF(String msg) {
System.out.println("writeTF");
}
}
|
类适配器
其实就是实现老接口,继承新接口实现类。实现的方法里面调用老接口的方法。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
public static class SDAdapterTF extends TFCardImpl implements SDCard {
@Override
public void readSD() {
System.out.println("adapter read tf card ");
}
@Override
public void writeSD(String msg) {
System.out.println("adapter write tf card");
writeTF(msg);
}
}
SDCard sdAdapterTF = new SDAdapterTF();
sdAdapterTF.readSD();
|
对象适配器
其实就是实现老接口,组合新接口。实现的方法里面调用老接口的方法。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
public static class SDAdapterTF2 implements SDCard {
private final TFCard tfCard;
public SDAdapterTF2(TFCard tfCard) {
this.tfCard = tfCard;
}
@Override
public void readSD() {
System.out.println("adapter read tf card ");
}
@Override
public void writeSD(String msg) {
System.out.println("adapter write tf card");
tfCard.writeTF(msg);
}
}
SDAdapterTF2 sdAdapterTF2 = new SDAdapterTF2(new TFCardImpl());
sdAdapterTF2.readSD();
|