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

C# 設計模式:橋接模式擴展抽象與實作介面 (3/5)

     編輯:關於C語言

擴展抽象:MyMessage (RefinedAbstraction)

繼承基礎抽象 Message,在委派實作基礎上增加額外行為:

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

namespace Pattern.Bridge
{
    /// 
    /// 操作 Message(RefinedAbstraction)
    /// 
    public class MyMessage : Message
    {
        /// 
        /// 獲取 Message
        /// 
        /// MessageModel 清單
        public override List<MessageModel> Get()
        {
            List<MessageModel> l = base.Get();

            foreach (MessageModel mm in l)
            {
                mm.Message += "(RefinedAbstraction)";
            }

            return l;
        }
    }
}

實作介面:AbstractMessage (Implementor)

定義實作部分的抽象介面,包含核心操作方法:

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

namespace Pattern.Bridge
{
    /// 
    /// 操作 Message(Implementor)
    /// 
    public abstract class AbstractMessage
    {
        /// 
        /// 獲取 Message
        /// 
        /// MessageModel 清單
        public abstract List<MessageModel> Get();

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

角色關係圖解

Abstraction (Message) ───────► Implementor (AbstractMessage)
      │                              │
      ▼                              ▼
RefinedAbstraction (MyMessage)   ConcreteImplementor (SqlMessage, XMLMessage)

關鍵設計點

  • 雙重繼承體系:抽象體系(Message → MyMessage)與實作體系(AbstractMessage → SqlMessage/XMLMessage)平行演化。
  • 委派機制:Message 持有 AbstractMessage 參考,Get()/Insert() 委派給實作物件。
  • 擴展點:MyMessage 覆寫 Get(),在基礎結果上附加標識,展示抽象層如何擴展功能而不修改實作層。
  • 介面分離:AbstractMessage 只定義核心操作,不包含抽象層特有邏輯。

此設計完美詮釋橋接模式「將抽象部分與它的實現部分分離,使它們都可以獨立地變化」的核心意圖。

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