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

C# 設計模式:中介者模式具體同事類別實作 (5/5)

     編輯:關於C語言

具體同事:SqlMessage

實作抽象同事介面,提供 SQL 訊息處理邏輯:

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

namespace Pattern.Mediator
{
    /// 
    /// Sql 方式操作 Message(ConcreteColleague)
    /// 
    public class SqlMessage : AbstractMessage
    {
        /// 
        /// 建構函式
        /// 
        /// UserId
        public SqlMessage(string userId)
            : base(userId)
        {
        }

        /// 
        /// 接受 Message(由中介者調用)
        /// 
        /// 來自 UserId
        /// Message 實體物件
        /// 處理結果描述
        public override string Insert(string from, MessageModel mm)
        {
            return "Sql方式插入Message(" + from + "發送給" + base.UserId + ")"
            + " - 內容:" + mm.Message
            + " - 時間:" + mm.PublishTime.ToString();
        }
    }
}

具體同事:XMLMessage

實作相同介面,提供 XML 訊息處理邏輯:

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

namespace Pattern.Mediator
{
    /// 
    /// XML 方式操作 Message(ConcreteColleague)
    /// 
    public class XMLMessage : AbstractMessage
    {
        /// 
        /// 建構函式
        /// 
        /// UserId
        public XMLMessage(string userId)
            : base(userId)
        {
        }

        /// 
        /// 接受 Message(由中介者調用)
        /// 
        /// 來自 UserId
        /// Message 實體物件
        /// 處理結果描述
        public override string Insert(string from, MessageModel mm)
        {
            return "XML方式插入Message(" + from + "發送給" + base.UserId + ")"
            + " - 內容:" + mm.Message
            + " - 時間:" + mm.PublishTime.ToString();
        }
    }
}

ConcreteColleague 設計要點

  • 身份標識:建構函式接收 userId,標識同事身份。
  • 中介者回調:Insert(string from, MessageModel mm) 由中介者呼叫,from 參數標識發送者。
  • 邏輯封裝:各同事封裝特定通道(SQL/XML)的發送邏輯。
  • 無直接引用:同事間不直接引用,只透過中介者通訊。

中介者模式完整角色對應

中介者模式類別圖
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
模式角色本例類別說明
MediatorAbstractMessageMediator抽象中介者介面
ConcreteMediatorMessageMediator具體中介者,管理同事註冊與路由
ColleagueAbstractMessage抽象同事,持有中介者引用
ConcreteColleagueSqlMessage, XMLMessage具體同事,實作具體通訊邏輯