设计模式——代理模式

  

代理模式:代理者和被代理者实现共同的行为,然后让代理制调用被代理者完成这些行为。

示例说明:代理者代理代理MrLi给MrssHong送礼物。

类图如下:

代码实现:

定义一个送礼物的接口:GiveGift

 package  com.zpj.designMode.proxy;//定义一个送礼物的接口public  interface  GiveGift  {,,, public  void  giveFlowers (),,,,, public  void  giveDolls (),,,,, public  void  giveChocolate ();
  }

,

实现MrLi:

 package  com.zpj.designMode.proxy;/* *
  ,* MrLi会追女孩送礼物所以要实现接口GiveGift  */public  class  MrLi  implements  GiveGift  {,,, private  MrssHong 香港;//,被追求着
  
  ,,,public  MrLi (MrssHong 香港),{,,,,,,,this.hong =,香港;
  ,,,}
  
  ,,,@Override ,,, public  void  giveFlowers (), {
  ,,,,,,,System.out.println(”- - - - - - - - - -送花- - - - - - - - - - - - -”,+,hong.getName ());
  ,,,}
  
  ,,,@Override ,,, public  void  giveDolls (), {
  ,,,,,,,System.out.println(”- - - - - - - - - -送洋娃娃- - - - - - - - - - - - -”,+,hong.getName ());
  ,,,}
  
  ,,,@Override ,,, public  void  giveChocolate (), {
  ,,,,,,,System.out.println(”- - - - - - - - - -送巧克力- - - - - - - - - - - - -”,+,hong.getName ());
  ,,,}
  
  }

,

实现代理代理:

 package  com.zpj.designMode.proxy; public  class  Proxy  implements  GiveGift  {,,, private  MrLi 人;//,被代理人
  
  ,,,public 代理(MrssHong 香港),{
  ,,,,,,,person =, new  MrLi(香港);
  ,,,}
  
  ,,,@Override ,,, public  void  giveFlowers (), {
  ,,,,,,,person.giveFlowers ();
  ,,,}
  
  ,,,@Override ,,, public  void  giveDolls (), {
  ,,,,,,,person.giveDolls ();
  ,,,}
  
  ,,,@Override ,,, public  void  giveChocolate (), {
  ,,,,,,,person.giveChocolate ();
  ,,,}
  
  }

,

被送礼物者:MrssHong

 package  com.zpj.designMode.proxy; public  class  MrssHong  {,,, private  String 名字,,,,,public  MrssHong (String 名称),{,,,,,,,超级(),,,,,,,,,this.name =,名称;
  ,,,},,,,public  String  getName (), {,,,,,,, return 名称;
  ,,,},,,,public  void  setName (String 名称),{,,,,,,,this.name =,名称;
  ,,,}
  
  }

,

测试类:

 package  com.zpj.designMode.proxy; import  org.junit.Test; public  class  TestUnit  {
  
  ,,,@Test ,,, public  void  test01 (), {
  ,,,,,,,MrssHong  hong =, new  MrssHong(“红×××”),,,,,,,,,//,告诉代理者向谁送礼物,这个代理专属于MrLi
  ,,,,,,,Proxy  Proxy =, new 代理(香港),,,,,,,,,//,代理者送礼物,,,,,,,,proxy.giveFlowers ();
  ,,,,,,,proxy.giveChocolate ();
  ,,,,,,,proxy.giveDolls ();
  ,,,}
  }


设计模式——代理模式