设计模式之Adapter——电话篇
前几天一位朋友把他的电话号码告诉我,我当时随手抄在一张小纸片上,然后把它夹在了一本书里,后来没想到我老婆把这本书邮个他弟了,这不当我有重要的事要和朋友时,没有办法联系了。书已经被邮了,这是不可更改的事实,打电话给朋友说重要的事,也是必须要干的。这些都不能以我的意志而转移。我该怎么办呢?还好有现代化的通讯工具--电话,我可以打电话给小舅子,让他告诉我不就得了吗?
好了言归正传,让我们开始吧。
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:通过打电话这个协调类,我获得了所要的电话号码,同时也和朋友说了事.