c#设计模式-结构型模式-7.代理模式

Posted mr.chenyuelin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c#设计模式-结构型模式-7.代理模式相关的知识,希望对你有一定的参考价值。

代理模式:为其它对象提供一个代理的访问

简单讲这件事不能由我来做,应该交给一个合适的人来做

例子,比如某明星不火了想炒作一下,这件事肯定不是明星在做,而是交给经纪人来做,经纪人就是代理人,然后明星就出现在发布会上,其实我也是个受害人呀,将事情交给合适的对象做可以避免不必要的问题

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 代理模式

    class Program
    
        static void Main(string[] args)
        
            AgentAbstract agent = new AgentPerson();
            agent.Speculation("出来现身,为炒作造势");

            agent.Speculation("不火了,继续搞事情");
        
    
    public abstract class AgentAbstract
    
        public abstract void Speculation(string thing);
    
    //明星
    public sealed class Star : AgentAbstract
    
        public override void Speculation(string thing)
        
            Console.WriteLine("其实我也是受害者呀");
        
    
    //经纪人,代理角色
    public sealed class AgentPerson:AgentAbstract
    
        private Star boss;
        public AgentPerson()
        
            boss = new Star();
        
        public override void Speculation(string thing)
        
            Console.WriteLine("前期弄点绯闻,拍点野照");
            boss.Speculation(thing);
            Console.WriteLine("然后发布会上哭泣,继续搞事情");
        
    


优点:
(1)、代理模式能够将调用用于真正被调用的对象隔离,在一定程度上降低了系统的耦合度;

(2)、代理对象在客户端和目标对象之间起到一个中介的作用,这样可以起到对目标对象的保护。代理对象可以在对目标对象发出请求之前进行一个额外的操作,例如权限检查等。

不同类型的代理模式也具有独特的优点,例如:

(1)、远程代理为位于两个不同地址空间对象的访问提供了一种实现机制,可以将一些消耗资源较多的对象和操作移至性能更好的计算机上,提高系统的整体运行效率。

(2)、虚拟代理通过一个消耗资源较少的对象来代表一个消耗资源较多的对象,可以在一定程度上节省系统的运行开销。

(3)、缓冲代理为某一个操作的结果提供临时的缓存存储空间,以便在后续使用中能够共享这些结果,优化系统性能,缩短执行时间。

(4)、保护代理可以控制对一个对象的访问权限,为不同用户提供不同级别的使用权限。

缺点:

(1)、由于在客户端和真实主题之间增加了一个代理对象,所以会造成请求的处理速度变慢

(2)、实现代理类也需要额外的工作,从而增加了系统的实现复杂度。

以上是关于c#设计模式-结构型模式-7.代理模式的主要内容,如果未能解决你的问题,请参考以下文章

设计模式之代理模式

揭秘设计模式之代理模式

代理模式-1(静态代理)

代理模式-1(静态代理)

设计模式之代理模式

java设计模式之代理模式