物件轉接器
比如到大陸去旅遊,他們的電壓是220v,要買個轉接器把220v轉成5v,才能給手機充電使用,手機只能用5v。
下圖中轉接器Adapter用到Voltage220類別,Adapter要實作output5v的方法,把220v轉成5v輸出
因為使用new Adater()時把Voltage220類別傳入,所以是有生死相隨的關係,使用實心菱形,代表組合,組合的意思是關係無法分開,一起建立一起被記憶體回收。
Phone類別,有一個chage()充電的方法,用到Voltage5類別。
程式碼
Voltage5V
1
2
3
public interface Voltage5V {
int output5v();
}
Voltage220
1
2
3
4
5
public class Voltage220 {
int output220v() {
return 220;
}
}
Adapter
1
2
3
4
5
6
7
8
9
10
public class Adapter implements Voltage5V{
private Voltage220 voltage220;
public Adapter(Voltage220 voltage220) {
this.voltage220 = voltage220;
}
@Override
public int output5v() {
return voltage220.output220v() / 44;
}
}
Phone
1
2
3
4
5
6
7
8
9
public class Phone {
public void charg(Voltage5V voltage5V) {
if ( voltage5V.output5v() == 5) {
System.out.println("can charging");
} else {
System.out.println("can not charging");
}
}
}
main主程式
1
2
3
4
5
6
7
public class Test {
public static void main(String[] args) {
Voltage5V voltage5V = new Adapter(new Voltage220());
Phone phone = new Phone();
phone.charg(voltage5V);
}
}
can charging