Posted on 2007-10-12 16:04
Jaunt 閱讀(233)
評論(0) 編輯 收藏 所屬分類:
設計模式(java)
今年過年手氣好,打牌贏了100塊,
我得意的笑,我得意的笑,總之一個字“爽”。因為往年打牌從沒贏過啊!我高興的回到家里,還沒等我開口報告戰況,老婆撂給我一句話“我弟要回上海,你給買
張票吧。”我心里雖然不高興,但臉上卻表現出很開心的樣子,立刻用堅定語氣說到:“請領導放心,保證完成任務!”。保證歸保證,可是大過年的票也確實難
買,在經過一番挫折后(嗚嗚),我只好去找票販子(Proxy)。
說到代理這個詞,大家可能都不陌生,其實現在社會上的好多中介也可以理解成為代理,說白了就是幫你辦事,拿中介費而已。
1、在這里,先把買票這個活動定義成一個接口(BuyTicket)類:
public interface BuyTicket {
public void buyTicket();
}
2、下面我們要對這兩個接口進行實現
A:正常情況下的買票活動(NormalBuyTicket)類:
public class NormalBuyTicket implements BuyTicket{
public void buyTicket(){
System.out.println("買火車票!");
}
}
B:代理情況下的買票活動(ProxyBuyTicket)類:
//當不能直接訪問NormalBuyTicket對象時,必須要用代理對象
public class ProxyBuyTicket implements BuyTicket{
private NormalBuyTicket normalBuyTicket;
public void buyTicket(){
if(normalBuyTicket==null){
normalBuyTicket = new NormalBuyTicket();
}
normalBuyTicket.buyTicket();
getMoney();
}
public void getMoney(){
System.out.println("獲得代理費!");
}
}
3、編寫測試類:
public class Test {
public static void main(String args[]){
BuyTicket buyTicket = new ProxyBuyTicket();
buyTicket.buyTicket();
}
}
4、說明:
A:定義:為其他對象提供一種代理以控制對這個對象的訪問。也就是說當我們不能直接訪問我們想訪問的對象時,必須通過一個代理對象來訪問。
B:在本例中,我想買票,但當我直接買不到票時,就只好通過票販子來買,這個道理應該誰都知道啊。
5、后記:
最終通過票販子,我獲得了去上海的票,老婆很高興,還說我很能干,但是我付出了100元的代理費,我到底該哭還是該笑呢,但又想一下:“花100元讓老婆表揚我,說我很能干,也不錯啊,你說呢!嘿嘿”。