首页 / 设计模式 / 设计模式--代理模式
设计模式--代理模式
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了设计模式--代理模式,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1406字,纯文字阅读大概需要3分钟。
内容图文
代理模式:
为其他对象提供一种代理以控制这个对象的访问。
组成:
- 抽象角色:通过接口或抽象类声明真实角色实现的业务方法。
- 代理角色:实现抽象角色,是真实角色的代理,通过真实角色的业务逻辑方法来实现抽象方法,并可以附加自己的操作,对真实角色加以控制。
- 真实角色:实现抽象角色,定义真实角色所要实现的业务逻辑,供代理角色调用。
优点:
- 职责明确:真实角色可以只做业务逻辑,其他控制可以用代理类完成
- 保护和控制真实角色:代理类作为调用者和真实角色的中介,可以有效的保护和控制真实角色。
- 容易控制:可以扩展不同的代理类,实现不同的目的,不需要修改真实角色的业务类。
缺点:
增加复杂度,多一个中介,降低速度
类图:
应用例子:
比如,你想追求一个女孩子,送礼物给她,但是你要先搞定她的闺蜜,闺蜜就相当于你的代理,闺蜜还可以看你表现控制是否送礼物给她。
下面是实现代码:
例子代码:
public class Girl { private String name; public Girl(String name) { this.name = name; } public String getName() { return name; } publicvoid setName(String name) { this.name = name; } }
public interface GiveGift { void giveFlower(Girl girl); void giveDolls(Girl girl); }
public class Suitor implements GiveGift { @Override publicvoid giveFlower(Girl girl) { System.out.println("送给"+girl.getName()+"一朵花!"); } @Override publicvoid giveDolls(Girl girl) { System.out.println("送给"+girl.getName()+"一个洋娃娃!"); } }
public class Proxy implements GiveGift { /** * 追求者 */private Suitor suitor = new Suitor(); @Override publicvoid giveFlower(Girl girl) { if(new Random().nextBoolean()){ suitor.giveFlower(girl); } } @Override publicvoid giveDolls(Girl girl) { suitor.giveDolls(girl); } }
public class Test { public static void main(String[] args) { Girl girl = new Girl("坨坨"); GiveGift proxy = new Proxy(); proxy.giveFlower(girl); proxy.giveDolls(girl); } }
最终效果:
原文:http://www.cnblogs.com/foreverYoungCoder/p/7804502.html
内容总结
以上是互联网集市为您收集整理的设计模式--代理模式全部内容,希望文章能够帮你解决设计模式--代理模式所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。