博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式--代理模式(Proxy)
阅读量:4198 次
发布时间:2019-05-26

本文共 1429 字,大约阅读时间需要 4 分钟。

代理模式
概述
为其他对象提供一种代理以控制对这个对象的访问。
适用性
1.远程代理(RemoteProxy)为一个对象在不同的地址空间提供局部代表。    2.虚代理(VirtualProxy)根据需要创建开销很大的对象。    3.保护代理(ProtectionProxy)控制对原始对象的访问。    4.智能指引(SmartReference)取代了简单的指针,它在访问对象时执行一些附加操作。
参与者
1.Proxy      保存一个引用使得代理可以访问实体。若RealSubject和Subject的接口相同,Proxy会引用Subject。      提供一个与Subject的接口相同的接口,这样代理就可以用来替代实体。      控制对实体的存取,并可能负责创建和删除它。      其他功能依赖于代理的类型:    2.RemoteProxy负责对请求及其参数进行编码,并向不同地址空间中的实体发送已编码的请求。    3.VirtualProxy可以缓存实体的附加信息,以便延迟对它的访问。    4.ProtectionProxy检查调用者是否具有实现一个请求所必需的访问权限。    5.Subject      定义RealSubject和Proxy的共用接口,这样就在任何使用RealSubject的地方都可以使用Proxy。    6.RealSubject      定义Proxy所代表的实体。
Example
Proxy public class ProxyObject implements Object {    Object obj;        public ProxyObject() {        System.out.println("这是代理类");        obj = new ObjectImpl();    }        public void action() {        System.out.println("代理开始");        obj.action();        System.out.println("代理结束");    }}Subject public interface Object {    void action();}RealSubject public class ObjectImpl implements Object {    public void action() {        System.out.println("========");        System.out.println("========");        System.out.println("这是被代理的类");        System.out.println("========");        System.out.println("========");    }}Test public class Test {    public static void main() {    	Object obj = new ProxyObject();        obj.action();    }}result 这是代理类代理开始================这是被代理的类================代理结束

转载地址:http://djbli.baihongyu.com/

你可能感兴趣的文章
【一天一道LeetCode】#47. Permutations II
查看>>
【一天一道LeetCode】#48. Rotate Image
查看>>
【一天一道LeetCode】#56. Merge Intervals
查看>>
【一天一道LeetCode】#57. Insert Interval
查看>>
【一天一道LeetCode】#58. Length of Last Word
查看>>
【一天一道LeetCode】#59. Spiral Matrix II
查看>>
【一天一道LeetCode】#30. Substring with Concatenation of All Words
查看>>
【一天一道LeetCode】#60. Permutation Sequence.
查看>>
【一天一道LeetCode】#62. Unique Paths
查看>>
【一天一道LeetCode】#61. Rotate List
查看>>
【一天一道LeetCode】#63. Unique Paths II
查看>>
【一天一道LeetCode】#36. Valid Sudoku
查看>>
【一天一道LeetCode】#75. Sort Colors
查看>>
【一天一道LeetCode】#76. Minimum Window Substring
查看>>
【计算机网络 第五版】阅读笔记之一:概述
查看>>
【计算机网络 第五版】阅读笔记之二:物理层
查看>>
【计算机网络 第五版】阅读笔记之三:数据链路层
查看>>
【计算机网络 第五版】阅读笔记之四:网络层
查看>>
【计算机网络 第五版】阅读笔记之五:运输层
查看>>
【一天一道LeetCode】#77. Combinations
查看>>