• 设计模式:代理模式


    定义:为其他对象提供一种代理以控制对这个对象的访问。

    结构图

    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();
            }
        }
    View Code

    客户端代码

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


    实用性:

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

                      示例:WebService,云服务

    2.虚拟代理:根据需要创建开销大对象,通过它来存放实例化需要很长时间的真是对象。

                      示例:打开一个很大的HTML网页时,里面可能有很多的文字和图片,但是还能很快的打开,此时所看到的是所有的文字,而图片却是一张张的

                               下载后才能看到。那些为打开的图片框,就是通过虚拟代理来代替了真是的图片,此时代理存储了真实图片的地址和尺寸。

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

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

  • 相关阅读:
    JavaScript学习(二)
    javaScript学习(一)
    CSS学习(一)
    HTML学习(一)
    ES之node机器配置elasticsearch.yml
    ES之master机器配置elasticsearch.yml
    jenkins--前端依赖之 node
    jenkins--邮件插件配置
    JsonPath提取表达式
    this关键字的作用
  • 原文地址:https://www.cnblogs.com/qianxingdewoniu/p/3543232.html
Copyright © 2020-2023  润新知