您好,登錄后才能下訂單哦!
代理模式:代理者和被代理者實現共同的行為,然后讓代理制調用被代理者完成這些行為。
示例說明:代理者Proxy 代理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 hong;// 被追求著 public MrLi(MrssHong hong) { this.hong = 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()); } }
實現代理Proxy :
package com.zpj.designMode.proxy;public class Proxy implements GiveGift { private MrLi person;// 被代理人 public Proxy(MrssHong hong) { person = new MrLi(hong); } @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 name; public MrssHong(String name) { super(); this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = 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(hong); // 代理者送禮物 proxy.giveFlowers(); proxy.giveChocolate(); proxy.giveDolls(); } }
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。