再炒作一次 17 fan.Speculation( " 这段时间不火了

时间:2021-11-11 06:16:15

原文:C#设计模式之十二代办代理模式(Proxy Pattern)【布局型】

一、引言

   今天我们要讲【布局型】设计模式的第七个模式,也是“布局型”设计模式中的最后一个模式,该模式是【代办代理模式】,英文名称是:Proxy Pattern。还是老套路,先从名字上来看看。“代办代理”可以理解为“取代”,取代“主人”做一些工作,为什么需要“代办代理”,是因为某些原因(好比:安适方面的原因),不想让“主人”直接面对这些繁琐、庞大的问题,但是这些工作是经“主人”同意或者授意的,如同“主人”亲自完成的一样。这个模式很简单,生活中的例子也很多。举例说明,歌星、影星的经纪人就是现实生活中一个代办代理模式的很好例子,还有操纵系统中的防火墙,也是代办代理的例子,要访谒系统,先过防火墙这关,否则免谈。还有很多了,就不一一列举了,大家在生活中慢慢的体会吧。

二、代办代理模式的详细介绍

2.1、动机(Motivate)

   在面向东西系统中,有些东西由于某种原因(好比东西创建的开销很大,或者某些操纵需要安适控制,或者需要进程外的访谒等),直接访谒会给使用者、或者系统布局带来很多麻烦。如安在不掉去透明操纵东西的同时来打点/控制这些东西特有的庞大性?增加一层间接层是软件开发中常见的解决方法。

2.2、意图(Intent)

   为其他东西供给一种代办代理以控制对这个东西的访谒。                                      ——《设计模式》GoF

2.3、布局图(Structure)

     

再炒作一次 17 fan.Speculation( " 这段时间不火了



2.4、模式的构成
    
    代办代理模式所涉及的角色有三个:

    (1)、抽象主题角色(Subject):声明了真实主题和代办代理主题的大众接口,这样一来在使用真实主题的任何处所都可以使用代办代理主题。

    (2)、代办代理主题角色(Proxy):代办代理主题角色内部含有对真实主题的引用,从而可以操纵真实主题东西;代办代理主题角色卖力在需要的时候创建真实主题东西;代办代理角色凡是在将客户端挪用通报到真实主题之前或之后,都要执行一些其他的操纵,而不是纯挚地将挪用通报给真实主题东西。

    (3)、真实主题角色(RealSubject):界说了代办代理角色所代表的真实东西。

    附:在WCF或者WebService的开发过程中,我们在客户端添加处事引用的时候,在客户措施中会添加一些特别的类,在客户端生成的类饰演着代办代理主题角色,我们客户端也是直接挪用这些代办代理角色来访谒长途处事供给的操纵。这个是长途代办代理的一个范例例子。

2.5、代办代理模式的分类:

    代办代理模式凭据使用目的可以分为以下几种:

    (1)、长途(Remote)代办代理:为一个位于差此外地点空间的东西供给一个局域代表东西。这个差此外地点空间可以是本电脑中,也可以在另一台电脑中。最范例的例子就是——客户端挪用Web处事或WCF处事。

    (2)、虚拟(Virtual)代办代理:按照需要创建一个资源消耗较大的东西,使得东西只在需要时才会被真正创建。

    (3)、Copy-on-Write代办代理:虚拟代办代理的一种,把复制(或者叫克隆)迟延到只有在客户端需要时,才真正采纳步履。

    (4)、掩护(Protect or Access)代办代理:控制一个东西的访谒,可以给差此外用户供给差别级另外使用权限。

    (5)、防火墙(Firewall)代办代理:掩护方针不让恶意用户接近。

    (6)、智能引用(Smart Reference)代办代理:当一个东西被引用时,供给一些特别的操纵,好比将对此东西挪用的次数记录下来等。

    (7)、Cache代办代理:为某一个方针操纵的功效供给姑且的存储空间,以便多个客户端可以这些功效。

   在上面所有种类的代办代理模式中,虚拟代办代理、长途代办代理、智能引用代办代理和掩护代办代理较为常见的代办代理模式。

2.6、代办代理模式的具体实现

    说起“代办代理模式”,其实很容易,现实生活中的例子也很多。明星的经纪人,国家的发言人都是代办代理的好例子。我们就用明星经纪人这个工作来介绍“代办代理模式”的实现吧。