1.什么是代理模式?
代理模式又称为委托模式,是结构型的设计模式之一 ,它可以为其他对象提供一种代理( proxy )以控制对这个对象的访问。 所谓代理,是指具有与代理元(被代理的对象)具有相同的接口的类,客户端必须通过代理与被代理的目标类进行交互,而代理一般在交互的过程中(交互的前后)进行某些特别的处理。也就是说,代理对象在客户端对象和目标对象之间起到中介的作用,它去掉了客户不能看到的内容和服务或者增添客户需要的额外的新服务。
2.代理模式的结构
Subject(抽象主题角色) 定义了业务方法,是真实主题与代理主题的共同接口
Proxy(代理主题角色) 内部包含对真实主题角色的引用,可完全控制真实主题的使用逻辑
RealSubject(真实主题角色) 含有对真实主题角色的引用,代理角色通常在将客户端调用传递给真实主题 角色之前或之后执行某些操作,而不是单纯的返回真实的对象。
3.代理模式种类
代理模式根据其目的和实现方式不同可分为很多种类,其中常用的几种代理模式简 要说明如下:
(1)远程代理(Remote Proxy) :为-个位于不同的地址空间的对象提供一个 本地的 代理对象I这个不同的地址空间可以是在同一台主机中,也可是在另一台主机中, 远程代理文称为大使(Ambassador).
(2)虚拟代理(Virtual Proxy) :如果需要创建一个 资源消耗较大的对象,先创建一 个消耗相对较小的对象来表示,真实对象只在需要时才会被真正创建。
(3)保护代理(Protect Proxy) :控制对一个对象的访问,可以给不同的用户提供不 同级别的使用权限。
(4)缓冲代理(Cache Proxy) :为某-个目标操作的结果提供临时的存储空间,以便 多个客户端可以共享这些结果。
(5)智能弓用代理(Smart Reference Proxy):当一个对象被引用时,提供- -些额外 的操作,例如将对象被调用的次数记录下来等。
4.代理模式优点
●代理模式的共同优点如下:
(1)能够协调调用者和被调用者,在一 定程度上降低了系统的耦合度;
(2)客户端可以针对抽象主题角色进行编程1增加和更换代理类无须修改源代码, 符合开闭原则,系统具有较好的灵活性和可扩展性。
●此外, 不同类型的代理模式也具有独特的优点,例如:
(1)远程代理为位于两个不同地址空间对象的访问提供了-种实现机制,可以将一. 些消耗资源较多的对象和操作移至性能更好的计算机上,,提高系统的整体运行效率;
(2)虚拟代理通过一一个消耗资源较少的对象来代表一一个消耗资源较多的对象, 可以 在一定程度上节省系统的运行开销;
③)缓冲代理为某一个操作的结果 提供临时的缓存存储空间,以便在后续使用中能 够共享这些结果,优化系统性能,缩短执行时间。
5.代理模式缺点:
代理模式的主要缺点如下:
(1)由于在客户端和真实主题之间增加了代理对象,因此 有些类型的代理模式可能会造成请求的处理速度变慢, 例如保护代理。
(2)实现代理模式需要额外的工作,而且有些代理模式的 实现过程较为复杂,例如远程代理。
6.代理模式与装饰模式比较
装饰模式:在不改变借口的前提下,动态扩展对象的 访问,是一个动态继承的过程。强调增强。
代理模式:在不改变接口的前提下,控制对象的访问 是类之间的封装和(某方面)的复用。强调控制。
实例:
我们将创建一个 Image 接口和实现了 Image 接口的实体类。ProxyImage 是一个代理类,减少 RealImage 对象加的内存占用。 ProxyPatternDemo,我们的演示类使用 ProxyImage 来获取要加载的 Image 对象,并按照需求进行显示
代码实现:
视频链接:B站审核中。。。
原文:https://www.cnblogs.com/ymym/p/12656072.html