C# 設計模式——代理模式

代理模式簡介

一個類代表另一個類的功能,爲其他對象提供一種代理以控制對這個對象的訪問。
在這裏插入圖片描述
主要解決:

在直接訪問對象時帶來的問題,比如說:要訪問的對象在遠程的機器上。在面向對象系統中,有些對象由於某些原因(比如對象創建開銷很大,或者某些操作需要安全控制,或者需要進程外的訪問),直接訪問會給使用者或者系統結構帶來很多麻煩,我們可以在訪問此對象時加上一個對此對象的訪問層。

使用場景:

想在訪問一個類時做一些控制,增加中間層Proxy。在代理模式中,由於Proxy與ConcreteSubject繼承同一接口,所以Client調用ConcreteSubject可以轉化爲Client調用Proxy在調用ConcreteSubject,類Proxy爲中間代理。

C# Demo

using System;
using System.Collections.Generic;

namespace Proxy_Pattern
{
    
    /// <summary>
    /// 代理類和對象的共用接口
    /// </summary>
    public abstract class Subject
    {
        public abstract void Print();
    }

    /// <summary>
    /// 代理類所創建的對象
    /// </summary>
    public class ConcreteSubject : Subject
    {
        public override void Print()
        {
            Console.WriteLine("ConcreteSubject");
        }
    }

    /// <summary>
    /// 代理類
    /// </summary>
    public class Proxy : Subject
    {
        private ConcreteSubject concreteSubject;

        public override void Print()
        {
            if( concreteSubject == null)
            {
                concreteSubject = new ConcreteSubject();
            }
            concreteSubject.Print();
        }
    }

    /// <summary>
    /// 客戶端測試類
    /// </summary>
    class Client
    {
        static void Main(string[] args)
        {
            // 創建代理類
            Proxy proxy = new Proxy();
            proxy.Print();
            Console.Read();
        }
    }
}

代理模式優點

  1. 職責清晰
    真實的角色就是實現實際的業務邏輯,不用關心其他非本職責的事務,通過後期的代理完成一件完成事務,附帶的結果就是編程簡潔清晰。
  2. 代理對象可以在客戶端和目標對象之間起到中介的作用,這樣起到了中介的作用和保護了目標對象的作用。
  3. 高擴展性

參考資料

https://www.runoob.com/design-pattern/proxy-pattern.html
更多:

23種設計模式C#

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章