zoukankan      html  css  js  c++  java
  • 代理模式(Proxy Pattern)

    一、概述
    在软件开发中,有些对象由于创建成本高、访问时需要与其它进程交互等原因,直接访问会造成系统速度慢、复杂度增大等问题。这时可以使用代理模式,给系统增加一层间接层,通过间接层访问对象,从而达到隐藏系统复杂性、提高系统性能的目的。
    二、代理模式
    代理模式为其他对象提供一种代理以控制对这个对象的访问。其结构图如下:

    Subject定义了RealSubject和Proxy共用的接口,使得在任何使用RealSubject的地方都可以使用Proxy

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

    RealSubject定义了Proxy所代表的实体。

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

    Proxy定义了一个控制RealSubject的代理,供Client使用。

        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.Read();
            }
        }

    代理模式根据用途不同可以分为几种类型:
    1.远程代理:为一个位于不同的地址空间的对象提供局部代表,将系统隐藏不同地址空间之间交互的细节起来,使得客户端可以认为被代理的对象是本地的而不是远程的。如.NET里为WebService创建的代理类。
    2.虚拟代理:根据需要创建一个资源消耗较大的对象,使得被代理的对象只有在必要的时候才被创建加载。如StringBuilder类的实现。
    3.其它代理:可以为被代理的对象增加访问控制、数据缓存等功能。

  • 相关阅读:
    QOMO Linux 4.0 正式版发布
    LinkChecker 8.1 发布,网页链接检查
    pgBadger 2.1 发布,PG 日志分析
    Aletheia 0.1.1 发布,HTTP 调试工具
    Teiid 8.2 Beta1 发布,数据虚拟化系统
    zLogFabric 2.2 发布,集中式日志存储系统
    开源电子工作套件 Arduino Start Kit 登场
    Piwik 1.9 发布,网站访问统计系统
    Ruby 1.9.3p286 发布,安全修复版本
    toBraille 1.1.2 发布,Java 盲文库
  • 原文地址:https://www.cnblogs.com/gzskys/p/5742827.html
Copyright © 2011-2022 走看看