橋接模式(Bridge Pattern)是結構型設計模式之一,其核心在於「將抽象部分與實現部分分離,使兩者能獨立變化」。這句定義出自 GoF 經典著作,簡單來說,就是透過組合/聚合關係取代繼承,降低抽象層與實現層的耦合度,提升系統擴展性。

public abstract class Abstraction
{
protected Implementor _implementor;
public Implementor Implementor
{
set { _implementor = value; }
get { return _implementor; }
}
public virtual void Operation()
{
_implementor.OperationImp();
}
}
public class RefinedAbstraction : Abstraction
{
public override void Operation()
{
_implementor.OperationImp();
}
}
public abstract class Implementor
{
public abstract void OperationImp();
}
public class ConcreteImplementorA : Implementor
{
public override void OperationImp()
{
Console.WriteLine("{0} Operation Method", this.GetType().Name);
}
}
public class ConcreteImplementorB : Implementor
{
public override void OperationImp()
{
Console.WriteLine("{0} Operation Method", this.GetType().Name);
}
}
static void Main(string[] args)
{
Abstraction a1 = new RefinedAbstraction();
a1.Implementor = new ConcreteImplementorA();
a1.Operation();
a1.Implementor = new ConcreteImplementorB();
a1.Operation();
Console.ReadKey();
}
場景:客戶管理系統中,業務邏輯(CustomersBase)與數據存取(DataObject)需獨立演進。橋接模式讓業務層不直接依賴具體數據實現,可靈活切換數據源(如 SQL Server、Oracle、XML 等)。

// 業務抽象基類
class CustomersBase
{
private DataObject _dataObject;
protected string group;
public CustomersBase(string group) { this.group = group; }
public DataObject Data { set { _dataObject = value; } get { return _dataObject; } }
public virtual void Next() { _dataObject.NextRecord(); }
public virtual void Prior() { _dataObject.PriorRecord(); }
public virtual void Add(string customer) { _dataObject.AddRecord(customer); }
public virtual void Delete(string customer) { _dataObject.DeleteRecord(customer); }
public virtual void Show() { _dataObject.ShowRecord(); }
public virtual void ShowAll()
{
Console.WriteLine("Customer Group: " + group);
_dataObject.ShowAllRecords();
}
}
// 具體業務類
class Customers : CustomersBase
{
public Customers(string group) : base(group) { }
public override void ShowAll()
{
Console.WriteLine();
Console.WriteLine("**************************");
base.ShowAll();
Console.WriteLine("**************************");
}
}
橋接模式透過「抽象與實現分離」,有效解決多維度變化導致的類爆炸問題。本文從原理、結構、代碼到實戰案例完整演示,展現其在 .NET 企業級開發中的實用價值。掌握橋接模式,能顯著提升系統架構的靈活性與可維護性。