设计模式——代理模式
来源:互联网 发布:ubuntu安装ssh server 编辑:程序博客网 时间:2024/04/30 01:18
来人!我要报警,大话设计模式居然教程序员追妹子!今天继续学习了代理模式,现阶段感觉比较好理解,随着自己学习的深入相必会发现这个模式的优点。
1、定义:为其他对象提供一种代理以控制对这个对象的访问。
2、结构图:
3、程序示例:
首先建立subject接口:
IGiveGift类:
public interface IGiveGift { void GiveDolls(); void GiveFlowers(); void GiveChocolate();}
然后定义SchoolGirl类,也就是被追求者
public class SchoolGirl { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; }}
追求者类Pursuit(RealProject类)
public class Pursuit implements IGiveGift{ SchoolGirl mm; public Pursuit(SchoolGirl mm){ this.mm = mm; } public void GiveDolls(){ System.out.println(mm.getName()+",送你洋娃娃"); } public void GiveFlowers(){ System.out.println(mm.getName()+",送你鲜花"); } public void GiveChocolate(){ System.out.println(mm.getName()+",送你巧克力"); }}
代理者,也就是帮忙递东西的代理Proxy类
public class Proxy implements IGiveGift{ Pursuit gg; public Proxy(SchoolGirl mm){ gg = new Pursuit(mm); } public void GiveDolls(){ gg.GiveDolls(); } public void GiveFlowers(){ gg.GiveFlowers(); } public void GiveChocolate(){ gg.GiveChocolate(); }}
这里要注意,此类中的对象为真正的追求者也就是RealProject类。
程序测试Test类:
public class Test { public static void main(String args[]){ SchoolGirl jiaojiao = new SchoolGirl(); jiaojiao.setName("娇娇"); Proxy daili = new Proxy(jiaojiao); daili.GiveDolls(); daili.GiveFlowers(); daili.GiveChocolate(); }}
测试结果:
娇娇,送你洋娃娃
娇娇,送你鲜花
娇娇,送你巧克力
4、总结:(留下以后慢慢理解)
代理分类
(1)远程代理,也就是为一个对象在不同的地址空间提供局部代表。这样可以隐藏一个对象存在于不同地址空间的事实。
(2)虚拟代理,是根据需要创建开销很大的对象,通过它来存放实例化需要很长时间的真是对象。
(3)安全代理,用来控制真是对象访问时的权限。
(4)智能指引,是指当前调用真是对象时,代理处理另外一些事。
最近天天在看书,希望能提高效率,随着学习的深入能提高领悟力。
0 0
- 设计模式—代理模式
- 设计模式—代理模式
- 设计模式—代理模式
- 设计模式—代理模式
- 设计模式—代理模式
- 设计模式—代理模式
- 设计模式—代理模式
- 设计模式—代理模式
- 设计模式—代理模式
- 设计模式—代理模式
- 设计模式——代理设计模式
- 设计模式——代理设计模式
- 每日设计模式——代理模式
- 学习设计模式——代理模式
- java设计模式——代理模式
- 设计模式——策略、代理模式
- 设计模式——代理模式(Proxy)
- 设计模式——代理模式
- Sublime Text3中文版+添加右键菜单
- 正则表达式之(?=pattern)(!=pattern)
- ZooKeeper 基本操作
- delphi idhttp 实战用法
- PL/SQL之二-块结构和组成元素
- 设计模式——代理模式
- 又是惊蛰
- 小亚细亚半岛—地图
- 排序算法:冒泡排序
- Delphi IdHTTP1下载文件防止假死 ( - 大悟还俗
- elipse中批量导入项目
- PL/SQL之三- 流程控制语句
- java学习之三——java基础入门
- 全局事件-广播(Broadcast)