代理模式——为他人做嫁衣裳

简介: 代理模式——为他人做嫁衣裳

代理(Proxy)模式定义:为其它对象提供一种代理以控制对这个对象的访问。


 代理(Proxy)模式的两个使用场合:


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

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

安全代理,用来控制真实对象访问时的权限。

智能指引,当调用真实对象时,代理处理另外一些事。


1.模式的结构

  装饰模式主要包含以下角色。

Subject类:定义RealSubject和Proxy的共用接口,这样使用RealSubject时就可以使用Proxy。


RealSubject类:定义Proxy所代表的真实实体。


Proxy类:保存一个引用使得代理可以访问实体,并提供一个与Subject的接口相同的接口,这样代理就可以用来替代实体。

2.实例代码

  Subject类

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

  RealSubject类

    class RealSubject:SUBJECT 
    {
        public override void Request()
        {
            Console.WriteLine("真实的请求");
        }
    }

  Proxy类

    class Proxy:SUBJECT 
    {
        RealSubject realSubject; 
        public override void Request()
        {
            if(realSubject ==null)
            {
                realSubject = new RealSubject();
           }
            realSubject.Request();
        }
    }

  客户端代码

    class Program
    {
        static void Main(string[] args)
        {
            Proxy proxy = new Proxy();
            proxy.Request();
            Console.ReadLine();
        }
    }
相关文章
|
28天前
|
设计模式 缓存 C#
C# 一分钟浅谈:装饰者模式与代理模式
【10月更文挑战第12天】本文介绍了面向对象编程中的两种常见设计模式:装饰者模式和代理模式。装饰者模式允许在运行时动态地给对象添加功能,而代理模式则通过代理对象控制对另一个对象的访问。文章详细讲解了这两种模式的概念、常见问题、如何避免问题以及代码示例,帮助读者更好地理解和应用这些设计模式。
36 13
|
4月前
|
设计模式
对于装饰器模式与代理模式的个人理解
摘要: 代理模式与装饰器模式虽相似,但目的不同。装饰器动态增强对象功能,如添加新特性,而不改变原有类。代理模式则用于控制访问,如优化昂贵操作或添加辅助服务(如日志),它可能在内部初始化原对象。用法上,装饰器由外部决定是否应用,允许链式创建,而代理通常内部调用,外部直接与代理交互,被代理对象可能独立不可用。
|
6月前
|
缓存 数据安全/隐私保护 C++
【C++】—— 代理模式
【C++】—— 代理模式
|
6月前
|
设计模式 缓存 安全
设计模式-代理模式(静态代理、动态代理、cglib代理)、代理模式和装饰者模式的区别
设计模式-代理模式(静态代理、动态代理、cglib代理)、代理模式和装饰者模式的区别
|
6月前
|
Java Spring
代理模式
代理模式
54 0
|
Java 网络安全 Maven
代理模式的运用
代理模式的运用
54 0
|
设计模式 JavaScript
关于代理模式我所知道的
关于代理模式我所知道的
81 0
|
Java Spring
代理模式你了解多少
代理模式你了解多少
76 0
|
Arthas Java 测试技术
结构型模式-代理模式
结构型模式-代理模式
70 0
|
设计模式 缓存 监控
我学会了,代理模式
代理模式属于结构型模式,这个类型的设计模式总结出了 类、对象组合后的经典结构,将类、对象的结构和使用解耦了,花式的去借用对象。
95 0
我学会了,代理模式