設計模式之Adapter——電話篇<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
前幾天一位朋友把他的電話號碼告訴我,我當時隨手抄在一張小紙片上,然後把它夾在了一本書裏,後來沒想到我老婆把這本書郵個他弟了,這不當我有重要的事要和朋友時,沒有辦法聯繫了。書已經被郵了,這是不可更改的事實,打電話給朋友說重要的事,也是必須要乾的。這些都不能以我的意志而轉移。我該怎麼辦呢?還好有現代化的通訊工具--電話,我可以打電話給小舅子,讓他告訴我不就得了嗎?
好了言歸正傳,讓我們開始吧。
1、在這裏,先定義一個被郵書(PostedBook)類:
public class PostedBook {
//從書中獲得我所要的電話號碼
public void getTelCodeFromBook() {
System.out.println("得到電話號碼!");
}
}
2、再定義一個打電話給朋友(TelToFriend)的類:
public class TelToFriend {
public void telSayThing(){
System.out.println("說重要的事!");
}
}
3、定義獲得打電話(TelPhone)類:
public class TelPhone extends TelToFriend{
private PostedBook postedBook;
public TelPhone (PostedBook postedBook) {//打電話關於被郵的書
this.postedBook=postedBook;
}
public void getTelCode() { //從被郵的書中獲得電話號碼
postedBook.getTelCodeFromBook();
}
}
4、編寫測試類:
public class Test {
public static void main(String args[]){
PostedBook postedBook = new PostedBook(); //被郵的那本書
TelPhone telPhone = new TelPhone(postedBook);
telPhone.getTelCode(); //得到朋友電話號碼
telPhone.telSayThing(); //和朋友說重要的事
}
}
5、說明:
A:Adapter模式的目的是將兩個沒有關係的類結合在在一起使用,在本例中被郵的書和打電話給朋友是兩個風馬牛不向及的事,正是因爲一個電話號碼才讓他們有所關聯,但獲得這個號碼的前提是我必須先打電話,因此通過電話完成了我的目的.
B:通過打電話這個協調類,我獲得了所要的電話號碼,同時也和朋友說了事.