StringBuilder 内部用了代理的技术实现, 是可变字符串的代理

.net设计模式实例之代理模式(Proxy Pattern)

一、代理模式简介(Brief Introduction)

代理模式(Proxy Pattern)对其他对象提供一种代理以控制对这个对象的访问。

二、解决的问题(What To Solve)

1、远程代理

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

比如.Net Web Service ,当一个项目在加入一个Web引用,引用Web Service的时候会在项 目中生成一个WebReference文件夹和响应的文件,这些文件夹和文件就是代理, 客户端在调 用此代理的时候实际上已经解决了远程访问的问题。

2、虚拟代理

虚拟代理,是根据需要创建开销很大的对象。通过它来存放实例化需要很长时间的真实对 象。这样可以达到最优化的性能。

比如浏览器使用代理模式优化网页下载,也就是首先展示网页文字,图片需要一张一张地 下载后才能看到。

3、安全代理

安全代理,用来控制真实对象访问时的权限。一般用于对象应该有不同的访问权限的时候 。

4、智能指引

智能指引,是指当调用真实的对象时,代理处理另外一些事情。比如,在访问一个实际对 象前,检查是否已经锁定它,以确保其他对象不能改变它。也就是在访问一个对象时附加的 一些内务处理。

三、代理模式分析(Analysis)1、代理模式结构

1、抽象类 Subject

public abstract class Subject
{
     public  abstract void Request();
}

2、真实实体RealSubject 继承于Subject

public class RealSubject:Subject
{
     public override void Request()
     {
         Console.WriteLine("对象的真实实体方法在执行。");
     }
}

3、代理类Proxy 继承于Subject类,同时引用RealSubject类

public class Proxy:Subject
{
     private RealSubject realSubject;
     public override void Request()
     {
         Console.WriteLine("通过代理类访问对象真实实体的方法。");
         if (realSubject == null)
         {
             realSubject = new RealSubject();
         }
         realSubject.Request();
     }
}

4、客户端代码

class Program
{
     static void Main(string[] args)
     {
         Proxy proxy = new Proxy();
         proxy.Request();
         Console.Read();
     }
}

总结(Summary)

代理模式(Proxy Pattern)对其他对象提供一种代理以控制对这个对象的访问。代理模 式分为远程代理、虚拟代理、安全代理和智能指引。

C#设计模式之代理模式(一)

C#设计模式之代理模式(二)

copy on write,代理模式的更多相关文章

  1. js设计模式总结-代理模式

    代理模式 解决哪一类问题 从字面意思上理解,代理模式解决对一个对象的直接访问,这种直接访问可能是"不方便"的,所谓"不方便"可能是直接访问成本比较大(在前端领域 ...

  2. Objective-c 代理模式(delegate)

    Objective-c 代理模式(delegate) (2012-07-31 22:04:39) 转载▼ 标签: 杂谈 分类: iOS Objective-c 代理模式(delegate)     一 ...

  3. 代理模式(静态代理、JDK动态代理原理分析、CGLIB动态代理)

    代理模式 代理模式是设计模式之一,为一个对象提供一个替身或者占位符以控制对这个对象的访问,它给目标对象提供一个代理对象,由代理对象控制对目标对象的访问. 那么为什么要使用代理模式呢? 1.隔离,客户端 ...

  4. 设计模式 笔记 代理模式 Proxy

    //---------------------------15/04/21---------------------------- //Proxy 代理模式-----对象结构型模式 /* 1:意图: ...

  5. 设计模式之代理模式(Proxy Pattern)_远程代理解析

    一.什么是代理模式? 顾名思义,代理就是第三方,比如明星的经纪人,明星的事务都交给经纪人来处理,明星只要告诉经纪人去做什么,经纪人自然会想办法去做,做完之后再把结果告诉明星就好了 本来是调用者与被调用 ...

  6. Spring AOP 学习(一) 代理模式

    AOP为Aspect Oriented Programming的缩写,意为:面向切面编程(也叫面向方面),可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术. ...

  7. 代理模式精讲(手写JDK动态代理)

    代理模式是一种架构型模式,表现出来就是一个类代表另一个类的功能,一般用在想对访问一个类的时候做一些控制,同时又不想影响正常的业务,这种代理模式在现实的生活中应用的也非常的广泛,我用穷举法给举几个好理解 ...

  8. Java设计模式——代理模式实现及原理

    简介 Java编程的目标是实现现实不能完成的,优化现实能够完成的,是一种虚拟技术.生活中的方方面面都可以虚拟到代码中.代理模式所讲的就是现实生活中的这么一个概念:中介. 代理模式的定义:给某一个对象提 ...

  9. Java的三种代理模式&完整源码分析

    Java的三种代理模式&完整源码分析 参考资料: 博客园-Java的三种代理模式 简书-JDK动态代理-超详细源码分析 [博客园-WeakCache缓存的实现机制](https://www.c ...

随机推荐

  1. javascript替代Array.prototype.some操作

    Array.prototype.some在低版本浏览器好像不太兼容,下列是替代方法 一. for 循环 const initIds: any[] = [1,2,3]; const Ids: any[] ...

  2. 检测到目标URL存在http host头攻击漏洞

    检测到目标URL存在http host头攻击漏洞 1.引发安全问题的原因 为了方便的获得网站域名,开发人员一般依赖于HTTP Host header.例如,在php里用_SERVER["HT ...

  3. 剑指offer-合并两个排列的链接

    题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则.   public ListNode Merge(ListNode list1,ListNode ...

  4. 20180824 SSRS Line Chart 绘制

    (很多时候我都会只记录遇到的问题点,很少详细的写整个过程) 1. 安装ReportBulider 客户端,不需要填写server url ,可以先放空,后面再维护. 安装包官网可以下载,是免费的,现在 ...

  5. SQL Server--疑难杂症之坑爹的Windows故障转移群集(转)

    估计是春节前最后一次写博客,也估计是本年值班最后一次踩雷,感叹下成也SQL SERVER,败也SQL SERVER. --======================================= ...

  6. Python 全栈开发四 python基础 函数

    一.函数的基本语法和特性 函数的定义 函数一词来源于数学,但编程中的「函数」概念,与数学中的函数是有很大不同的.函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数 ...

  7. 2019.03.21 admin

    1.新建文件创建一个应用类 stu Python manage.py startapp stu 2,创建应用类 记得在setting中的installed_apps中添加应用 student/mode ...

  8. js 对象的_proto_属性 和函数的prototype属性分析

    bill是 Employee类型的实例,_proto_指向Employee.prototype Employee.prototype有一个constructor属性,指向Employee函数自身 fu ...

  9. gerrit上的commit msg中关联jira单号(含gerrit的安装)

    这个问题折腾了很久,前期后后大概一个月吧,终于搞定了,查了很多资料,有的不完整,有的完全就不能用,有的没说完整,所以一定要记录下来,我的心血啊. 由于公司在用的gerrit的是正式环境中的,大家都在使 ...

  10. \Temporary ASP.NET Files\root\文件不断增长,如何处理?

    很久没有写博了.最近半年除了忙活布置新家和过年期间走亲访友之外,都是在公司处理一些项目中的杂事:连家里买的很多书都停下来没看了,感觉这段时间在事业和学习上一直都是忙忙碌碌,却又碌碌无为. 吐槽完,说正 ...