public class HelloWorld {
public static void main(String[] args) {
Computer computer =
new
Computer();
SDCard sdCard =
new
SDCardImpl();
System.out.println(computer.readSD(sdCard));
System.out.println(
"------------"
);
TFCard tfCard =
new
TFCardImpl();
SDAdapterTF adapter =
new
SDAdapterTF(tfCard);
System.out.println(computer.readSD(adapter));
}
}
interface SDCard {
String readSD();
void writeSD(String msg);
}
class SDCardImpl implements SDCard {
@Override
public String readSD() {
String msg =
"sd card read a msg: hello sd card"
;
return
msg;
}
@Override
public void writeSD(String msg) {
System.out.println(
"sd card write msg: "
+ msg);
}
}
class Computer {
public String readSD(SDCard sdCard) {
if
(sdCard ==
null
) {
throw
new
NullPointerException(
"sd card null"
);
}
return
sdCard.readSD();
}
}
interface TFCard {
String readTF();
void writeTF(String msg);
}
class TFCardImpl implements TFCard {
@Override
public String readTF() {
String msg =
"sd card read a msg: hello tf card"
;
return
msg;
}
@Override
public void writeTF(String msg) {
System.out.println(
"tf card write msg: "
+ msg);
}
}
class SDAdapterTF implements SDCard {
private TFCard tfCard;
public SDAdapterTF(TFCard tfCard) {
this
.tfCard = tfCard;
}
@Override
public String readSD() {
System.out.println(
"adapter read tf card "
);
return
tfCard.readTF();
}
@Override
public void writeSD(String msg) {
System.out.println(
"adapter write tf card"
);
tfCard.writeTF(msg);
}
}