来说说(Proxy) 代理模式
来源:互联网 发布:淘宝店铺公告怎么写 编辑:程序博客网 时间:2024/05/23 16:39
1,生活中的例子。
代理模式提供一个中介以控制对这个对象的访问。一张支票或银行存单是账户中资金的代理。支票在市场交易中用来代替现金,并提供对签发人账号上资金的控制。而在软件系统中,这种代理模式,依然可以更好的把要访问的对象保护起来,不让客户端直接靠近,客户端可以对实际要访问的系统做在此封装,条件等的判断。
2,实际的代码
using System;/// <summary>/// 代理模式/// </summary>public class MathMethod{public int Add(int a,int b){return a + b;}public int Sub(int a, int b){return a - b;}public int Mul(int a,int b){return a + b;}public float Dev(int a,int b){return (float)(a / b);}}/// <summary>/// 代理模式/// </summary>public class MathProxy{MathMethod maths = new MathMethod();public int Add(int a,int b){return maths.Add (a, b);}public int Sub(int a,int b){return maths.Sub (a, b);}public int Mul(int a,int b){return maths.Mul (a, b);}public float Dev(int a,int b){return maths.Dev (a, b);}}
代理模式实现要点:
1.远程(Remote)代理:为一个位于不同的 地址空间的对象提供一个局域代表对象。这个不同的地址空间可以是在本机器中,也可是在另一台机器中。远程代理又叫做大使(Ambassador)。好处是系统可以将网络的细节隐藏起来,使得客户端不必考虑网络的存在。客户完全可以认为被代理的对象是局域的而不是远程的,而代理对象承担了大部份的网络通讯工作。由于客户可能没有意识到会启动一个耗费时间的远程调用,因此客户没有必要的思想准备。
2.虚拟(Virtual)代理:根据需要创建一个资源消耗较大的对象,使得此对象只在需要时才会被真正创建。使用虚拟代理模式的好处就是代理对象可以在必要的时候才将被代理的对象加载;代理可以对加载的过程加以必要的优化。当一个模块的加载十分耗费资源的情况下,虚拟代理的好处就非常明显。
3.Copy-on-Write代理:虚拟代理的一种。把复制(克隆)拖延到只有在客户端需要时,才真正采取行动。
4.保护(Protect or Access)代理:控制对一个对象的访问,如果需要,可以给不同的用户提供不同级别的使用权限。保护代理的好处是它可以在运行时间对用户的有关权限进行检查,然后在核实后决定将调用传递给被代理的对象。
5.Cache代理:为某一个目标操作的结果提供临时的存储空间,以便多个客户端可以共享这些结果。
6.防火墙(Firewall)代理:保护目标,不让恶意用户接近。
7.同步化(Synchronization)代理:使几个用户能够同时使用一个对象而没有冲突。
8.智能引用(Smart Reference)代理:当一个对象被引用时,提供一些额外的操作,比如将对此对象调用的次数记录下来等。- 来说说(Proxy) 代理模式
- 来说说组件(Components)模式
- 来说说指令(Command)模式
- 来说说<Builder>创建模式
- 来说说(Prototype)原型模式
- 来说说<Adpater>适配器模式
- 来说说(Composite)组合模式
- 来说说(Facade)外观模式
- Proxy模式 代理模式
- 代理模式:Proxy模式
- 来说说Unity观察者(Observer)模式
- 来说说SubClass沙盒模式
- 来说说(Memorandum)备忘录模式
- 来说说(Decorator)装饰者模式
- 来说说(Strategy)策略模式
- 来说说(AbstractFactory)静态工厂模式
- 来说说(Singleton)单例模式
- 来说说(SimpleFactory)简单工厂模式
- Javascript闭包——懂不懂由你,反正我是懂了
- 面试题66. 矩阵中的路径
- 数组和ArrayList的区别
- ubuntu 下面安装protocol_buf
- 最大子数组问题
- 来说说(Proxy) 代理模式
- HTML有哪些meta标签
- 第九章:接口
- [C++ Primer CH03]第3章 字符串、向量和数组(笔记)
- oracle 创建用户使用的语句
- 基于Spring+SpringMVC+MyBatis+Websocket的网页聊天尝试
- 坚持不懈,直到成功-I will persist. I will win.
- redis学习日志九(有序集合(zset)的常用命令)
- 算法导论快速排序实现