23种设计模式之——代理模式

什么是代理模式?

为其他对象提供一种代理以控制对这个对象的访问。

它都用在什么场合呢?

1、远程代理:也就是为一个对象在不同的地址空间提供局部代表。这样可以隐藏一个对象存在不同地址空间的事实。

2、虚拟代理:是根据需要创建开销很大的对象。通过它来存放实例化需要很长时间的真实对象。

3、安全代理:用来控制真实对象访问时的权限。

4、智能指引,是指当调用真实的对象时,代理处理另外一些事。

代理模式实现:

Subject类,定义了RealSubject和Proxy的共用接口,这样就在任何使用RealSubject的地方都可以使用Proxy。

/** * 作者:LKP * 时间:2018/7/26 * Subject类 */public abstract class Subject {public abstract void Request();}

RealSubject类,定义Proxy所代表的真实实体。

/** * 作者:LKP * 时间:2018/7/26 */public class RealSubject extends Subject{@Overridepublic void Request() {System.out.println("真实的请求");}}

Proxy类,保存一个引用使得代理可以访问实体,并提供一个与Subject的接口相同的接口,这样代理就可以用来替代实体。

/** * 作者:LKP * 时间:2018/7/26 */public class Proxy extends Subject {RealSubject realSubject;@Overridepublic void Request() {if(realSubject == null){realSubject = new RealSubject();}realSubject.Request();}}

客户端代码:

/** * 作者:LKP * 时间:2018/7/26 * 客户端 */public class Client {public static void main(String[] args){Proxy proxy = new Proxy();proxy.Request();}}

运行结果:

END

本文分享自微信公众号 - 程序员的成长之路(cxydczzl)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-09-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏ccylovehs

前端存储技术

后端常用数据库做数据存储,譬如MySql、MongoDB,缓存技术存储数据,如Redis、Memcached;

13040
来自专栏noteless

计算机网络起源 网络发展简介(一)

截图自百度百科:https://baike.baidu.com/item/%E4%BA%92%E8%81%94%E7%BD%91/199186

22330
来自专栏武军超python专栏

2018年9月25日python的web框架Django入门的理论知识

1、什么是软件     软件就是解决某一问题或者某类问题的指令集合,是一个工具,是一个进程,是程序。

8810
来自专栏Modeng的专栏

珍藏版Chrome插件送给你们,不仅是程序员必备

大家好,消失了几天我又满血复活归来了,最近这几天太忙了一直在加班工作,这不昨天又干到凌晨一点,今天早上七点就起来了,到现在还都没有休息,现在只剩半血了,不对应该...

10320
来自专栏Android 技术栈

Android WebView与JS交互实例

好久就想写这篇文章了,一直到现在才着手,其实更好,经过之前这么长时间理解的更透彻了。

14320
来自专栏依乐祝

Asp.NetCoreWebApi图片上传接口(二)集成IdentityServer4授权访问(附源码)

上一篇文章中,给大家讲解了如何通过 Asp.Net Core Web Api实现图片上传的接口,具体的可以[点这里查看][https://www.cnblogs...

19140
来自专栏AndroidTraveler

漫画:什么是加密算法?

加密算法最早诞生在什么时候?是在计算机出现之后吗?不不不,早在古罗马时期,加密算法就被应用于战争当中。

19330
来自专栏AndroidTraveler

Flutter 即学即用系列博客——01 环境搭建

https://flutter.io/docs/get-started/install

14340
来自专栏Java修行之道

Springboot@Configuration和@Bean详解

可以看到在@Configuration注解中是包含@Component注解的,被@Configuration修饰的类被定义为一个Spring容器(应用上下文)

28330
来自专栏finleyMa

Amazon S3 工具及使用

持续部署中需要将编译后的静态资源打包上传到S3服务中 ,就研究了下。 需要申请Amazon账号,得开通信用卡,可免费使用一年 然后开通S3服务,填写buck...

86520

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励