(六)代理模式

  1. 代理設計模式概述 

爲另一個對象提供一個替身或佔位符,以控制對這個對象的訪問(Head First設計模式給出的定義)

特點:

  • 代理類和委託類具有共同的父類或父接口,這樣在任何使用委託類對象的地方都可以使用代理類對象替代。
  • 代理類負責請求的預處理、過濾,將請求分配給委託類處理,以及委託類處理完請求的後續處理。
  1. 優點

低耦合易擴展靈活度高

  1. 缺點 

間接訪問可能會延遲請求相應增加工作量

這裏理財經理是代理類,銀行是委託類,客戶不能直接訪問委託類,通過代理類訪問

//理財接口

public inteface ManageMoney {

 public void financing();

}

//銀行

public class TradeStock implents ManageMoney{

private boolean hasExperience;//有經驗嗎

public TradeStock(){

}

public TradeStock(boolean hasExperience){

this.hasExperience = hasExperience;

}

public  void trade(){

if(hasExperience){

System.out.println(上交所:您可以買股票了);

}else{

System.out.println(上交所:請學會股票知識再來買吧);

}

}

@Override

public void financing(){

trade();

}

}

//理財經理

public class FinancialManager implements ManageMoney{

private TradeStock tradeStock;

public FinancialManager(){}

@Override

public void financing(){

tradeStock = new TradeStock(hasExperience:true);

System.out.println(理財經理:開始炒股);

tradeStock.financing();

}

}

最後的測試代碼的類圖如下所示,其中理財(ManagerMoney)就是目標(Subject);炒股(TradeStock)就是理財的實現類,理財經理(FinancialManager)就是代理,去理財的方法通過代理,更方便地實現了理財。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章