- 代理設計模式概述
爲另一個對象提供一個替身或佔位符,以控制對這個對象的訪問(Head First設計模式給出的定義)
特點:
- 代理類和委託類具有共同的父類或父接口,這樣在任何使用委託類對象的地方都可以使用代理類對象替代。
- 代理類負責請求的預處理、過濾,將請求分配給委託類處理,以及委託類處理完請求的後續處理。
- 優點
低耦合,易擴展,靈活度高
- 缺點
間接訪問可能會延遲請求相應,增加工作量
這裏理財經理是代理類,銀行是委託類,客戶不能直接訪問委託類,通過代理類訪問
//理財接口
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)就是代理,去理財的方法通過代理,更方便地實現了理財。