设计模式之笔记--代理模式(Proxy)

代理模式(Proxy)

定义

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

类图

描述

Subject,定义了ConcreteSubject和Proxy的共用接口,这样就可以在任何使用ConcreteSubject的地方使用Proxy;

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

ConcreteSubject,定义Proxy所代理的真实实体。

应用场景

之前访问google的时候,Client只需要发送一个Request给google服务器,google服务器在接收到这个请求之后就会把页面Response给Client。

虽然现在不能直接访问google了,但是有时候Client又希望能够用到google,此时就可以使用代理,让代理服务器帮忙转发Client的请求。

类图如下:

    public abstract class WebSite
    {
        public abstract void Request(string url);
        public abstract string Response();
    }

    public class Google : WebSite
    {
        public override void Request(string url)
        {
            Console.WriteLine("get " + url);
        }

        public override string Response()
        {
            return "Google";
        }
    }

    public class Proxy : WebSite
    {
        private Google google;

        public Proxy(Google google)
        {
            this.google = google;
        }

        public override void Request(string url)
        {
            this.google.Request(url);
        }

        public override string Response()
        {
            return this.google.Response();
        }
    }

 

posted @ 2016-04-20 15:19  sunny906  阅读(294)  评论(0编辑  收藏  举报