代理模式:代理者和被代理者实现共同的行为,然后让代理制调用被代理者完成这些行为。
示例说明:代理者代理代理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 (); ,,,} }