Loading... # 设计模式(五)——代理模式 ## 参考 > 大话设计模式  ——  程杰 著 ## 目录 [设计模式(一)——简单工厂模式](https://www.princelei.club/archives/67.html) [设计模式(二)——策略模式](https://www.princelei.club/archives/68.html) [设计模式(三)——设计原则](https://www.princelei.club/archives/116.html) [设计模式(四)——装饰模式](https://www.princelei.club/archives/117.html) [设计模式(五)——代理模式](https://www.princelei.club/archives/119.html) [设计模式(六)——工厂方法模式](https://www.princelei.club/archives/132.html) [设计模式(七)——原型模式](https://www.princelei.club/archives/133.html) [设计模式(八)——模板方法模式](https://www.princelei.club/archives/134.html) [设计模式(九)——外观模式](https://www.princelei.club/archives/135.html) [设计模式(十)——建造者模式](https://www.princelei.club/archives/136.html) [设计模式(十一)——观察者模式](https://www.princelei.club/archives/137.html) [设计模式(十二)——抽象工厂模式](https://www.princelei.club/archives/138.html) [设计模式(十三)——状态模式](https://www.princelei.club/archives/139.html) [设计模式(十四)——适配器模式](https://www.princelei.club/archives/140.html) [设计模式(十五)——备忘录模式](https://www.princelei.club/archives/141.html) [设计模式(十六)——组合模式](https://www.princelei.club/archives/147.html) [设计模式(十七)——迭代器模式](https://www.princelei.club/archives/148.html) [设计模式(十八)——单例模式](https://www.princelei.club/archives/157.html) [设计模式(十九)——桥接模式](https://www.princelei.club/archives/159.html) [设计模式(二十)——命令模式](https://www.princelei.club/archives/160.html) [设计模式(二十一)——职责链模式](https://www.princelei.club/archives/161.html) [设计模式(二十二)——中介者模式](https://www.princelei.club/archives/162.html) [设计模式(二十三)——享元模式](https://www.princelei.club/archives/163.html) [设计模式(二十四)——解释器模式](https://www.princelei.club/archives/173.html) [设计模式(二十五)——访问者模式](https://www.princelei.club/archives/174.html) ## 何为代理模式 - 代理模式(Proxy),为其他对象提供一种代理以控制对这个对象的访问。 ## 代理模式应用 - 远程代理,也就是为一个对象在不同的地址空间提供局部代表。这样可以隐藏一个对象存在于不同地址空间的事实。 - 虚拟代理,是根据需要创建开销很大的对象。通过它来存放实例化需要很长时间的真实对象。 - 安全代理,用来控制真实对象访问的权限。 - 智能指引,是指当调用真实对象时,代理处理另外一些事。 ## 代理模式实现代理别人送妹子礼物 ``` /** * 代理接口 */ public interface IGiveGift { void giveDolls(); void giveFlowers(); void giveChocolate(); } ``` ``` /** * 被追求者类 */ public class SchoolGirl { private String name; public SchoolGirl(String name) { this.name = name; } public String getName() { return name; } } ``` ``` /** * 追求者类 */ public class Pursuit implements IGiveGift{ private SchoolGirl mm; public Pursuit(SchoolGirl mm){ this.mm = mm; } @Override public void giveDolls() { System.out.println(mm.getName()+" 送你洋娃娃"); } @Override public void giveFlowers() { System.out.println(mm.getName()+" 送你鲜花"); } @Override public void giveChocolate() { System.out.println(mm.getName()+" 送你巧克力"); } } ``` ``` /** * 代理类 */ public class Proxy implements IGiveGift { private Pursuit gg; public Proxy(SchoolGirl mm) { gg = new Pursuit(mm); } @Override public void giveDolls() { gg.giveDolls(); } @Override public void giveFlowers() { gg.giveFlowers(); } @Override public void giveChocolate() { gg.giveChocolate(); } } ``` ``` /** * 客户端 */ public class ProxyMainClass { public static void main(String[] args) { SchoolGirl mm = new SchoolGirl("李娇娇"); Proxy daili = new Proxy(mm); daili.giveDolls(); daili.giveFlowers(); daili.giveChocolate(); } } ``` 输出: ``` 李娇娇 送你洋娃娃 李娇娇 送你鲜花 李娇娇 送你巧克力 ``` 这样,娇娇不认识追求她的人,但却可以通过代理人得到礼物。 Last modification:June 11th, 2020 at 06:27 pm © 允许规范转载
想想你的文章写的特别好https://www.237fa.com/