代理模式(Proxy Pattern)

1、概述
在軟件開發中,有些對象因爲建立成本高、訪問時須要與其它進程交互等緣由,直接訪問會形成系統速度慢、複雜度增大等問題。這時可使用代理模式,給系統增長一層間接層,經過間接層訪問對象,從而達到隱藏系統複雜性、提升系統性能的目的。
2、代理模式
代理模式爲其餘對象提供一種代理以控制對這個對象的訪問。其結構圖以下:緩存

 

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

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

 

RealSubject定義了Proxy所表明的實體。性能

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

 

Proxy定義了一個控制RealSubject的代理,供Client使用。ui

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

            realSubject.Request();
        }
    }

客戶端代碼:spa

    class Program
    {
        static void Main(string[] args)
        {
            Proxy proxy = new Proxy();
            proxy.Request();

            Console.Read();
        }
    }

 

代理模式根據用途不一樣能夠分爲幾種類型:
1.遠程代理:爲一個位於不一樣的地址空間的對象提供局部表明,將系統隱藏不一樣地址空間之間交互的細節起來,使得客戶端能夠認爲被代理的對象是本地的而不是遠程的。如.NET裏爲WebService建立的代理類。
2.虛擬代理:根據須要建立一個資源消耗較大的對象,使得被代理的對象只有在必要的時候才被建立加載。如StringBuilder類的實現。
3.其它代理:能夠爲被代理的對象增長訪問控制、數據緩存等功能。代理

相關文章
相關標籤/搜索