时间:2021-05-19
一、概述
在软件开发中,有些对象由于创建成本高、访问时需要与其它进程交互等原因,直接访问会造成系统速度慢、复杂度增大等问题。这时可以使用代理模式,给系统增加一层间接层,通过间接层访问对象,从而达到隐藏系统复杂性、提高系统性能的目的。
二、代理模式的详细介绍
代理模式为其他对象提供一种代理以控制对这个对象的访问。其结构图如下:
Subject定义了RealSubject和Proxy共用的接口,使得在任何使用RealSubject的地方都可以使用Proxy
RealSubject定义了Proxy所代表的实体。
Proxy定义了一个控制RealSubject的代理,供Client使用。
代理模式按照使用目的可以分为以下几种:
在上面所有种类的代理模式中,虚拟代理、远程代理、智能引用代理和保护代理较为常见的代理模式。下面让我们具体看看代理模式的具体定义。
2.1 定义
代理模式——就是给某一个对象提供一个代理,并由代理对象控制对原对象的引用。在一些情况下,一个客户不想或者不能直接引用一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。例如电脑桌面的快捷方式就是一个代理对象,快捷方式是它所引用的程序的一个代理。
2.2 代理模式实现
看完代理模式的描述之后,下面以一个生活中的例子来解释下代理模式,在现实生活中,如果有同事出国或者朋友出国的情况下,我们经常会拖这位朋友帮忙带一些电子产品或化妆品等东西,这个场景中,出国的朋友就是一个代理,他(她)是他(她)朋友的一个代理,由于他朋友不能去国外买东西,他却可以,所以朋友们都托他帮忙带一些东西的。下面就以这个场景来实现下代理模式,具体代码如下:
在上面的代码中都有相应的注释,这里也不多解释了。
三、代理模式的优缺点
全面分析完代理模式之后,让我们看看这个模式的优缺点:
优点:
代理模式能够将调用用于真正被调用的对象隔离,在一定程度上降低了系统的耦合度;
代理对象在客户端和目标对象之间起到一个中介的作用,这样可以起到对目标对象的保护。代理对象可以在对目标对象发出请求之前进行一个额外的操作,例如权限检查等。
缺点:
由于在客户端和真实主题之间增加了一个代理对象,所以会造成请求的处理速度变慢
实现代理类也需要额外的工作,从而增加了系统的实现复杂度。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
说明:主要参考《HeadFirst设计模式(中文版)》,使用C#代码实现。代码:Github1、观察者模式UML图2、气象监测类图3、气象监测代码(书中C#版)
前言在学习SQL2012基础教程过程中会时不时穿插其他内容来进行讲解,相信看过SQLServer2012T-SQL基础教程的童鞋知道前面写的所有内容并非都是摘抄
本文实例讲述了java设计模式之静态代理模式。分享给大家供大家参考,具体如下:代理模式,可以通过代理可以在原来的基础上附加一些其他的操作。静态代理模式相对比较简
本文实例讲述了C#实现单件模式的三种常用方法。分享给大家供大家参考。具体分析如下:单件模式是一种设计模式,即保持同时只能创建一个实例,下面列出了C#实现单件模式
本文实例讲述了JavaScript设计模式之代理模式。分享给大家供大家参考,具体如下:代理模式的定义,代理是一个对象(proxy)用它来控制目标对象的访问。为此