首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 設計模式:代理模式介面與實作類別 (2/2)

     編輯:關於C語言

目標介面:IMessage

定義代理與真實主題共同實作的介面:

using System;
using System.Collections.Generic;
using System.Text;

namespace Pattern.Proxy
{
    /// 
    /// 對 Message 操作的介面
    /// 
    public interface IMessage
    {
        /// 
        /// 獲取 Message
        /// 
        /// MessageModel 清單
        List<MessageModel> Get();

        /// 
        /// 插入 Message
        /// 
        /// Message 實體物件
        /// 是否成功
        bool Insert(MessageModel mm);
    }
}

真實主題:SqlMessage

實際執行業務邏輯的類別:

using System;
using System.Collections.Generic;
using System.Text;

namespace Pattern.Proxy
{
    /// 
    /// Sql 方式操作 Message
    /// 
    public class SqlMessage : IMessage
    {
        /// 
        /// 獲取 Message
        /// 
        /// MessageModel 清單
        public List<MessageModel> Get()
        {
            List<MessageModel> l = new List<MessageModel>();
            l.Add(new MessageModel("SQL方式獲取Message", DateTime.Now));
            return l;
        }

        /// 
        /// 插入 Message
        /// 
        /// Message 實體物件
        /// 是否成功
        public bool Insert(MessageModel mm)
        {
            // 程式碼略
            return true;
        }
    }
}

代理模式角色對應(補充說明)

本系列共 2 篇,第 1 篇介紹概念與基礎實體,第 2 篇定義介面與真實主題。完整代理模式通常還包含:

  • Proxy (代理類別):實作 IMessage,持有 SqlMessage 參考,在委派前後添加控制邏輯(權限檢查、延遲載入、日誌、快取等)。
  • Client (客戶端):操作 IMessage 介面,不知情是代理還是真實主題。

常見代理類型

代理模式核心在於「控制對物件的存取」,為真實主題提供間接層,是 AOP(面向切面編程)實現的基礎結構之一。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
代理類型用途本例潛在應用
遠端代理隱藏網路通訊細節WCF/Web API 客戶端代理
虛擬代理延遲建立昂貴物件大型報表產生器、圖片載入
保護代理控制存取權限Insert/Get 前檢查用戶角色
智慧引用添加額外操作引用計數、鎖定、日誌記錄