【設計模式之代理模式】

我是太陽啦啦啦發表於2016-03-06

前言:

今天我們學習的模式為代理模式,見名字如見該模式,代理模式,則提供一個代理,由代理對物件進行訪問,暫時先這麼理解!通過接下來的學習,大家肯定會對代理模式有一個全面的瞭解。
核心:

(一)定義

代理模式(Proxy),為其他物件提供一種代理控制對這個物件的訪問。
  簡單的說,代理模式就是在訪問物件的時候引入一定程度的間接性。代理就是真實物件的代表。

(二)結構圖

(三)基本程式碼

Subject類,定義了RealSubject和Proxy的共用介面,這樣就在任何使用RealSubject的地方都可以使用Proxy

<span style="font-size:18px;">abstract class Subject
        {
            public abstract void Request();
        }</span>
RealSubject類,定義Proxy所代表的真實實體

<span style="font-size:18px;">class RealSubject : Subject
        {
            public override void Request()
            {
                Console.WriteLine("真實的請求");
            }
        }</span>
Proxy類,儲存一個引用使得代理可以訪問實體,並提供一個與Subject的介面相同的介面,這樣代理就可以用來替代實體。

 <span style="font-size:18px;">class Proxy : Subject
        {
            RealSubject realSubject;
            public override void Request()
            {
                if (realSubject == null)
                {
                    realSubject = new RealSubject();
                }
            }
        }</span>
客戶端程式碼

<span style="font-size:18px;">static void Main(string[] args)
        {
           
            Console.Read();

            Proxy proxy = new Proxy();
            proxy.Request();

            Console.Read();
        }</span>

(四)應用

A.遠端代理

為一個物件在不同的地址空間提供區域性代表。這樣可以隱藏一個物件存在於不同的地址空間的事實。

B.虛擬代理

是根據需要建立開銷很大的物件。通過它來存放例項化需要很長時間的真實物件。虛擬代理可以進行最優化。

C.安全代理

用來控制真實物件訪問時的許可權

D.智慧代理

是指呼叫真實的物件時,代理處理另外的一些事。

(五)為什麼要使用代理?

使用者希望程式和某個物件打交道,程式不希望使用者直接訪問該物件。

(六)優缺點

優點:

代理模式能夠協調呼叫者和被呼叫者,在一定程度上降低了系統 的耦合度。

缺點:

·有些型別的代理模式可能會造成請求的處理速度變慢

·實現代理模式需要額外的工作,有些代理模式的實現非常複雜。

總結:

代理模式,很好的理解,有自己的缺點和優點,但在實際的專案中使用我們要好好考慮!

相關文章