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

C# 設計模式:裝飾模式基礎實體與抽象元件介面 (2/6)

     編輯:關於C語言

資料實體:MessageModel

裝飾模式中傳遞的資料模型:

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

namespace Pattern.Decorator
{
    /// 
    /// Message 實體類別
    /// 
    public class MessageModel
    {
        /// 
        /// 建構函式
        /// 
        /// Message 內容
        /// Message 發布時間
        public MessageModel(string msg, DateTime pt)
        {
            this._message = msg;
            this._publishTime = pt;
        }

        private string _message;
        /// 
        /// Message 內容
        /// 
        public string Message
        {
            get { return _message; }
            set { _message = value; }
        }

        private DateTime _publishTime;
        /// 
        /// Message 發布時間
        /// 
        public DateTime PublishTime
        {
            get { return _publishTime; }
            set { _publishTime = value; }
        }
    }
}

抽象元件:AbstractMessage

定義核心操作介面,Component 角色:

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

namespace Pattern.Decorator
{
    /// 
    /// 操作 Message 的抽象構件(Component)
    /// 
    public abstract class AbstractMessage
    {
        /// 
        /// 獲取 Message
        /// 
        /// MessageModel 清單
        public abstract List<MessageModel> Get();

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

Component 介面設計原則

  • 最小完整介面:只定義核心業務操作 Get()/Insert(),不包含裝飾相關方法。
  • 介面穩定性:核心介面變更會影響所有裝飾器與元件,需謹慎設計。
  • 資料傳遞:MessageModel 作為參數/返回值在元件與裝飾器間流動。

裝飾模式適用場景

  • 需要在不影響其他物件的情況下,動態給單一物件添加職責。
  • 需要可撤銷的職責擴展(移除裝飾器即可)。
  • 無法使用繼承擴展(如類別密封、會導致子類別爆炸)。
  • 橫切關注點分離:日誌、快取、驗證、授權、效能監控等。

下一篇將實作具體元件 SqlMessage、XMLMessage,展示核心業務邏輯。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved