zoukankan      html  css  js  c++  java
  • 不得不懂的C#设计模式学习(四)

    前边已经连着写了三种设计模式,由于忙于其他事现在接着写。

    代理模式(Proxy)

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

    代理模式结构

    1.Subject类,定义了RealSubject和Proxy的公用接口,这样就在任何使用RealSubject的地方都可以调用Proxy。

    2.RealSubject类,定义Proxy所代表的真实实体。

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

    代码如下

    abstract class Subject
    {
        public abstract void Request();
    }
    
    
    class RealSubject : Subject
    {
        public override void Request()
        {
            Console.WriteLine("真实请求");
        }
    }
    
    class Proxy : Subject
    {
        RealSubject realSubject;
        public override void Request()
        {
            if (realSubject == null)
            {
                realSubject = new RealSubject();
            }
            realSubject.Request();
        }
    }
    static void Main(string[] args)
            {
                Proxy proxy = new Proxy();
                proxy.Request();
                Console.ReadKey();
            }
    

      代理模式 应用场景:

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

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

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

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

         总结:代理模式其实就是在访问对象时引入一定程度的间接性,可以附加多种用途。(代理是真实对象的代表)

  • 相关阅读:
    SqlServer Alwayson 搭建排错记录(一)
    SqlServer图形数据库初体验
    SqlServer报错:主体“dbo”不存在
    IIS重叠回收
    No module named 'revoscalepy'问题解决
    SqlServer查询文件组被占用情况
    SqlServer作业指定目标服务器
    [持续更新]UnsatisfiedLinkError常见问题及解决方案
    Android加载SO库UnsatisfiedLinkError错误的原因及解决方案
    _set_invalid_parameter_handler异常处理函数
  • 原文地址:https://www.cnblogs.com/mondLei/p/3021410.html
Copyright © 2011-2022 走看看