代理模式
发布日期:2021-09-25 11:48:13
浏览次数:2
分类:技术文章
本文共 1635 字,大约阅读时间需要 5 分钟。
代理模式:为其他对象提供一种代理以控制对这个对象的访问。
例子:《大话设计模式》追女朋友例子
被追求者
package Proxy;public class SchoolGirl { public String name; public void setName(String name){ this.name=name; } public String getName(){ return name; }}
package Proxy;//代理接口interface GiveGift { void GiveDolls(); void GiveFlowers(); void GiveChocolate();}
package Proxy;//追求者类,让追求者实现送礼物接口public class Pursuit implements GiveGift{ SchoolGirl mm; public Pursuit(SchoolGirl mm){ this.mm=mm; } @Override public void GiveDolls() { // TODO Auto-generated method stub System.out.println(mm.name+" 送你洋娃娃"); } @Override public void GiveFlowers() { // TODO Auto-generated method stub System.out.println(mm.name+" 送你鲜花"); } @Override public void GiveChocolate() { // TODO Auto-generated method stub System.out.println(mm.name+" 送你巧克力"); } }
package Proxy;//代理类,让代理也去实现送礼物接口public class Proxy implements GiveGift{ Pursuit gg; public Proxy(SchoolGirl mm){ gg=new Pursuit(mm); } @Override public void GiveDolls() { // TODO Auto-generated method stub gg.GiveDolls(); } @Override public void GiveFlowers() { // TODO Auto-generated method stub gg.GiveFlowers(); } @Override public void GiveChocolate() { // TODO Auto-generated method stub gg.GiveChocolate(); }}
package Proxy;//测试public class Test { public static void main(String[] args) { // TODO Auto-generated method stub SchoolGirl sh=new SchoolGirl(); sh.setName("Autumn"); Proxy daili=new Proxy(sh); daili.GiveDolls(); daili.GiveFlowers(); daili.GiveChocolate(); }}
代理模式应用场合:
1.远程代理,即为一个对象在不同的地址空间提供局部代表,这样可以隐藏一个对象存在于不同地址空间的事实
2.虚拟代理,是根据需要创建开销很大的对象,通过它来存放实例化需要很长时间的真实对象
3.安全代理,控制真实对象访问时的权限
4.智能代理,是指当调用真实的对象时,代理处理另外一些事
转载地址:https://blog.csdn.net/Autumn03/article/details/80757499 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2024年04月02日 05时04分28秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
以练代学设计模式 -- FTP文件管理项目
2019-04-27
FTP文件管理项目(本地云)项目日报(十)
2019-04-27
学以致用设计模式 之 “组合模式”
2019-04-27
我用过的设计模式(7)--享元模式
2019-04-27
MySQL数据库从入门到实战应用(学习笔记一)
2019-04-27
MySQL数据库从入门到实战应用(学习笔记二)
2019-04-27
种树:二叉树、二叉搜索树、AVL树、红黑树、哈夫曼树、B树、树与森林
2019-04-27
【C++】攻克哈希表(unordered_map)
2019-04-27
转:【答学员问】- 该如何根据岗位学习相关技能
2019-04-27
转:【答学员问】有什么经验教训,是你在面试很多次之后才知道的?
2019-04-27
消息队列:解耦、异步、削峰,现有MQ对比以及新手入门该如何选择MQ?
2019-04-27
【奇技淫巧】-- 三角形最小路径和
2019-04-27
【小技巧】argc和argv的用法
2019-04-27
学不下去了怎么办?
2019-04-27
二叉树的前中后序遍历(迭代法)(带动画)
2019-04-27
【小技巧】【XShell】【Xftp】Windows桌面与Linux虚拟机互传文件
2019-04-27
【redis入门】Centos下安装redis
2019-04-27
【redis入门】redis安装后相关知识串讲
2019-04-27
【redis】来吧,展示一下redis 发布-订阅模式
2019-04-27