實作抽象實作介面 AbstractMessage,提供 SQL 具體操作邏輯:
using System;
using System.Collections.Generic;
using System.Text;
namespace Pattern.Bridge
{
///
/// Sql 方式操作 Message(ConcreteImplementor)
///
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;
}
}
}
實作相同介面,提供 XML 具體操作邏輯:
using System;
using System.Collections.Generic;
using System.Text;
namespace Pattern.Bridge
{
///
/// XML 方式操作 Message(ConcreteImplementor)
///
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;
}
}
}
AbstractMessage,必須實作 Get() 與 Insert()。Message / MyMessage 持有 AbstractMessage 參考,運行時可透明切換。JsonMessage、OracleMessage 等新實作,零影響抽象層代碼。橋接模式強調「抽象與實作的結構性分離」,兩者都有各自的繼承體系;策略模式強調「演算法的封裝與互換」,通常只有單一策略介面與多個具體策略。橋接模式的抽象層本身也有繼承階層(Message → MyMessage)。