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

C# 設計模式:適配器模式源類別與目標介面定義 (2/3)

     編輯:關於C語言

源類別:SqlMessage (Adaptee)

被適配的現有類別,提供 Get() 和 Insert() 方法:

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

namespace Pattern.Adapter
{
    /// 
    /// 源(Adaptee)角色
    /// Sql 方式操作 Message
    /// 
    public class SqlMessage
    {
        /// 
        /// 獲取 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;
        }
    }
}

目標介面:IMessage (Target)

客戶端期望的介面,定義 Select() 和 Add() 方法:

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

namespace Pattern.Adapter
{
    /// 
    /// 目標(Target)角色
    /// 操作 Message 的介面
    /// 
    public interface IMessage
    {
        /// 
        /// 獲取 Message
        /// 
        /// MessageModel 清單
        List<MessageModel> Select();

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

角色關係說明

  • Adaptee (源角色):SqlMessage,既有功能類別,介面不符合客戶端需求。
  • Target (目標角色):IMessage,客戶端期望使用的介面標準。
  • Adapter (適配器角色):Message (類別適配器) / Message2 (物件適配器),實作 Target 介面,內部委派或繼承 Adaptee。
  • Client (客戶端):僅依賴 IMessage 介面,不知情適配器內部如何委派給 SqlMessage。

介面不匹配問題

// 源介面 (SqlMessage)
Get() -> List<MessageModel>
Insert(MessageModel) -> bool

// 目標介面 (IMessage)  
Select() -> List<MessageModel>
Add(MessageModel) -> bool

// 適配器職責:方法名稱映射 + 參數/返回值轉換(本例僅方法名不同)

適配器模式解決「介面不兼容」問題,讓既有類別在不修改代碼的情況下滿足新介面需求,是系統整合與遺留代碼復用的關鍵模式。

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