设计模式:代理模式(Proxy)
来源:互联网 发布:nginx加lua模块 编辑:程序博客网 时间:2024/06/07 04:51
代理模式:为其他对象提供一种代理以控制对这个对象的访问
仅仅一句话自然是说明不了代理模式是什么,我们先看看代码例子,什么是代理:
举一个栗子吧,假设有个人家里有困难,A同学知道了这个人的情况,想捐点钱给他,但是又想做好事不留名,于是A同学让B同学帮忙把钱给这个人。
那么我们先建一个People类:
class People {String name;People(String name) {this.name = name;}}
然后写一个代理接口,我们这个栗子围绕捐钱,所以这个接口有一个送钱的方法:
interface Proxy {void giveMoney();}
两个同学分别实现该接口:
class StudentA implements Proxy {private Proxy p;StudentA(People pople) {this.p = new StudentB(pople);}@Overridepublic void giveMoney() {p.giveMoney();}}class StudentB implements Proxy {People p;StudentB(People p) {this.p = p;}@Overridepublic void giveMoney() {System.out.println(p.name+"钱给你,不用谢,我叫红领巾");}}
然后调用:
public static void main(String[] args) {//这个有困难的人叫做大众脸People dazhonglian=new People("大众脸");StudentA a=new StudentA(dazhonglian);a.giveMoney();}
运行结果:
大众脸,钱给你,不用谢,我叫红领巾
我们把同学A叫做代理,同学B叫做真实需求。AB都实现了Proxy,这样就可以在使用真实需求的时候,调用代理。
代理模式一般会在一下几个场合用到:
1.远程代理,为一个对象在不同的地址空间提供局部代表。这样就可以隐藏一个对象存在于不同地址空间的事实。
2.虚拟代理,根据需要创建开销很大的对象。通过它来存放实例化很长的真实对象。在真实对象还没有完全实例化之前,可以先用代理对象代替。
3.安全代理,用来控制真实对象访问时的权限。
4.智能指引,当调用真实对象时,代理处理另外一些事情。
代理对象就是真是对象的代表。
0 0
- Proxy代理设计模式
- 设计模式 - 代理(Proxy)
- 代理设计模式--Proxy
- Proxy(代理)设计模式
- 代理 proxy 设计模式
- 设计模式----Proxy(代理)模式
- 设计模式--代理模式(Proxy)
- 设计模式 -- 代理模式(Proxy)
- 设计模式--代理模式(Proxy)
- [设计模式]Proxy代理模式
- 设计模式--Proxy(代理模式)
- [设计模式]代理模式(Proxy)
- 设计模式-Proxy代理模式
- 设计模式--proxy代理模式
- 设计模式 -- 代理模式 Proxy
- 设计模式-代理模式(Proxy)
- [设计模式] 代理模式(Proxy)
- 设计模式--代理模式(Proxy)
- hello pyhon
- 驰骋工作流引擎表单设计器-数据获取
- selenium之 富文本框和editor编辑器的处理
- ip netns命令操作docker容器的网络
- 快速上手RaphaelJS
- 设计模式:代理模式(Proxy)
- SQLite数据库的使用之使用内置函数
- POJ 1729 Jack ans Jill(bfs)
- QDU easy problem(另类枚举)
- C# 基础连接已经关闭: 服务器关闭了本应保持活动状态的连接的错误
- LeetCode OJ-387. First Unique Character in a String
- spring框架中的定时器
- windows下Python连接Oracle
- CXTPReportView--VirtualList