(六)代理模式

  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)就是代理,去理财的方法通过代理,更方便地实现了理财。

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