#### 代理模式(Proxy Pattern)
意图:为其他对象提供一种代理以控制对这个对象的访问。
主要解决:在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问),直接访问会给使用者或者系统结构带来很多麻烦,我们可以在访问此对象时加上一个对此对象的访问层。
何时使用:想在访问一个类时做一些控制。
如何解决:增加中间层。
关键代码:实现与被代理类组合。
应用实例: 1、Windows 里面的快捷方式。 2、猪八戒去找高翠兰结果是孙悟空变的,可以这样理解:把高翠兰的外貌抽象出来,高翠兰本人和孙悟空都实现了这个接口,猪八戒访问高翠兰的时候看不出来这个是孙悟空,所以说孙悟空是高翠兰代理类。 3、买火车票不一定在火车站买,也可以去代售点。 4、一张支票或银行存单是账户中资金的代理。支票在市场交易中用来代替现金,并提供对签发人账号上资金的控制。 5、spring aop。
优点: 1、职责清晰。 2、高扩展性。 3、智能化。
缺点: 1、由于在客户端和真实主题之间增加了代理对象,因此有些类型的代理模式可能会造成请求的处理速度变慢。 2、实现代理模式需要额外的工作,有些代理模式的实现非常复杂。
使用场景:按职责来划分,通常有以下使用场景: 1、远程代理。 2、虚拟代理。 3、Copy-on-Write 代理。 4、保护(Protect or Access)代理。 5、Cache代理。 6、防火墙(Firewall)代理。 7、同步化(Synchronization)代理。 8、智能引用(Smart Reference)代理。
注意事项: 1、和适配器模式的区别:适配器模式主要改变所考虑对象的接口,而代理模式不能改变所代理类的接口。 2、和装饰器模式的区别:装饰器模式为了增强功能,而代理模式是为了加以控制。
实现
我们将创建一个 Image 接口和实现了 Image 接口的实体类。ProxyImage 是一个代理类,减少 RealImage 对象加载的内存占用。
ProxyPatternDemo,我们的演示类使用 ProxyImage 来获取要加载的 Image 对象,并按照需求进行显示。
![Image text](http://www.runoob.com/wp-content/uploads/2014/08/proxy_pattern_uml_diagram.jpg)
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
读书笔记:netty权威指南的学习项目.zip (169个子文件)
config 259B
FETCH_HEAD 122B
HEAD 130B
HEAD 23B
WebSocketServer.html 2KB
pack-3ebdeb8250db7309190b6a336166a73b4bd57441.idx 11KB
index 20KB
SubscribeReqProto.java 30KB
SubscribeRespProto.java 23KB
HttpFileServerHandler.java 9KB
MultiplexerTimeServer.java 5KB
TimeClientHandler.java 5KB
WebSocketServerHandler.java 4KB
AsyncTimeClientHandler.java 4KB
TestQLExpress.java 3KB
HttpFileServer.java 3KB
NettyClient.java 3KB
HttpXmlClient.java 3KB
LoginAuthRespHandler.java 3KB
HttpXmlServer.java 3KB
ReadComplateHandler.java 3KB
EchoServer.java 3KB
HttpXmlServerHandler.java 3KB
EchoServer.java 3KB
SubReqServer.java 3KB
EchoClient.java 2KB
HeartBeatReqHandler.java 2KB
EchoClient.java 2KB
NettyServer.java 2KB
TimeServer.java 2KB
SubReqClient.java 2KB
NettyMessageDecoder.java 2KB
WebSocketServer.java 2KB
TimeServer.java 2KB
NettyMessageEncoder.java 2KB
SubReqServer.java 2KB
TimeClientHandler.java 2KB
TimeClient.java 2KB
ChannelBufferByteInput.java 2KB
AbstractHttpXmlDecoder.java 2KB
TimeServerHandler.java 2KB
XstreamUtil.java 2KB
TimeServerHandler.java 2KB
TimeClient.java 2KB
TimeClient.java 2KB
TimeServerHandler.java 2KB
SubReqClient.java 2KB
ChannelBufferByteOutput.java 2KB
Header.java 2KB
TestOrder.java 2KB
TimeClientHandler.java 2KB
LoginAuthReqHandler.java 2KB
TimeClient.java 2KB
HttpXmlRequestEncoder.java 2KB
MarshallingCodeFactory.java 2KB
HttpXmlRequestDecoder.java 2KB
UserInfo.java 2KB
AbstractHttpXmlEncoder.java 2KB
EchoClientHandler.java 2KB
Order.java 2KB
PerformTestUserInfo.java 2KB
MarshallingCodecFactory.java 2KB
TimeServerHandler.java 2KB
MarshallingEncoder.java 1KB
HttpXmlClientHandler.java 1KB
HeartBeatRespHandler.java 1KB
TestSubscribeReqProto.java 1KB
AsyncTimeServerHandler.java 1KB
SubReqClientHandle.java 1KB
SubReqClientHandle.java 1KB
SubReqServerHandler.java 1KB
MarshallingDecoder.java 1KB
TimeServer.java 1KB
HttpXmlResponseEncoder.java 1KB
SubReqServerHandler.java 1KB
EchoClientHandler.java 1KB
Address.java 1KB
Reactor.java 1KB
TimeServer.java 1KB
OrderFactory.java 1KB
Test.java 1KB
MessageType.java 1KB
SubscribeReq.java 1KB
Customer.java 1KB
ChainPatternDemo.java 1KB
AcceptCompletionHandler.java 1KB
EchoServerHandler.java 1KB
HttpXmlResponseDecoder.java 1KB
EchoServerHandler.java 1022B
CglibProxy.java 1017B
TestUserInfo.java 1014B
MsgpackDecoder.java 952B
SubscribeResp.java 888B
HttpXmlResponse.java 861B
AbstractLogger.java 830B
TimeServerHandlerExecutePool.java 819B
Handler.java 806B
HttpXmlRequest.java 805B
Meal.java 801B
MsgpackEncoder.java 784B
共 169 条
- 1
- 2
资源评论
九转成圣
- 粉丝: 5177
- 资源: 2961
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于Java的DVD租赁管理系统.zip
- (源码)基于Arduino的模型铁路控制系统.zip
- (源码)基于C语言STM32F10x框架的温湿度监控系统.zip
- (源码)基于Spring Boot的极简易课堂对话系统.zip
- (源码)基于JSP+Servlet+MySQL的学生管理系统.zip
- (源码)基于ESP8266的蜂箱监测系统.zip
- (源码)基于Spring MVC和Hibernate框架的学校管理系统.zip
- (源码)基于TensorFlow 2.3的高光谱水果糖度分析系统.zip
- (源码)基于Python框架库的知识库管理系统.zip
- (源码)基于C++的日志管理系统.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功