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

C# 設計模式:裝飾模式具體元件 SqlMessage 與 XMLMessage (3/6)

     編輯:關於C語言

具體元件:SqlMessage

實作 AbstractMessage 介面,提供核心 SQL 操作邏輯:

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

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

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

具體元件:XMLMessage

實作相同介面,提供核心 XML 操作邏輯:

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

namespace Pattern.Decorator
{
    /// 
    /// XML 方式操作 Message(ConcreteComponent)
    /// 
    public class XMLMessage : AbstractMessage
    {
        /// 
        /// 獲取 Message
        /// 
        /// MessageModel 清單
        public override List<MessageModel> Get()
        {
            List<MessageModel> l = new List<MessageModel>();
            l.Add(new MessageModel("XML方式獲取Message", DateTime.Now));
            return l;
        }

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

ConcreteComponent 角色定位

  • 核心業務邏輯:封裝實際的資料存取操作(SQL/XML),是被裝飾的基礎物件。
  • 介面標準化:實作 AbstractMessage,定義 Get()/Insert() 核心契約。
  • 無裝飾感知:完全不知道上層是否有裝飾器,專注核心職責。
  • 可互換性:裝飾器可包裝 SqlMessage 或 XMLMessage,甚至包裝其他裝飾器。

裝飾模式四大角色對應表

模式角色本例類別說明
ComponentAbstractMessage抽象介面,定義核心操作
ConcreteComponentSqlMessage, XMLMessage核心實作,被裝飾的基礎物件
DecoratorAbstractMessageWrapper抽象裝飾器,委派機制與介面一致性
ConcreteDecoratorCheckUserWrapper, CheckInputWrapper具體裝飾器,單一職責功能擴展

核心元件與裝飾器的分離,使系統既能保持核心邏輯純粹,又能靈活擴展橫切功能,是處理 Cross-cutting Concerns(橫切關注點)的經典方案。

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