ChiYu Code Journey

哈囉大家!今天我們要介紹的設計模式是:介面卡模式(Adapter),又叫做轉接器模式。

🌟 介面卡模式(Adapter)到底在做什麼?

就像生活中的轉接頭,它能讓本來不相容的介面順利溝通。在軟體開發裡,Adapter 模式同樣扮演橋樑角色,讓舊有系統與新系統或外部套件能順利合作。


🤔 什麼時候適合用 Adapter?


🔌 C# Adapter 模式範例

我們以「充電器轉接頭」的例子來說明介面卡模式。

🔋 既有不相容的類別

using System;

/// <summary>
/// 現有的歐洲插座
/// </summary>
public class EuropeanSocket
{
    public void SpecificRequest() => Console.WriteLine("使用歐洲規格的插座");
}

🔋 定義目標介面

/// <summary>
/// 台灣插頭介面
/// </summary>
public interface ITaiwanPlug
{
    /// <summary>
    /// 連接插座
    /// </summary>
    void Request();
}

🔌 建立介面卡

/// <summary>
/// 介面卡:讓歐洲插座能用於台灣插頭
/// </summary>
public class PlugAdapter : ITaiwanPlug
{
    private EuropeanSocket _europeanSocket;

    public PlugAdapter(EuropeanSocket socket)
    {
        _europeanSocket = socket;
    }

    public void Request()
    {
        // 透過轉接頭呼叫原本的歐洲規格插座
        _europeanSocket.SpecificRequest();
        Console.WriteLine("透過介面卡轉接,順利連接到台灣插頭。");
    }
}

🚀 實際使用範例

using System;

class Program
{
    static void Main(string[] args)
    {
        EuropeanSocket europeanSocket = new EuropeanSocket();

        // 透過 Adapter 轉接為台灣插頭介面
        ITaiwanPlug adapter = new PlugAdapter(europeanSocket);
        adapter.Request();
    }
}

🎯 執行結果:

使用歐洲規格的插座
透過介面卡轉接,順利連接到台灣插頭。

⚠️ 使用 Adapter 模式的小提醒


🎉 結語

透過介面卡模式,我們可以讓不同介面之間順暢地溝通與協作,不再為介面不合而煩惱。

持續關注下一篇設計模式介紹吧!

介面卡模式:讓不相容也能合作

發布於 2025年6月12日 (更新於 2025年6月12日) · 約 1 分鐘閱讀 · C# Design Patterns

哈囉大家!今天我們要介紹的設計模式是:介面卡模式(Adapter),又叫做轉接器模式。

🌟 介面卡模式(Adapter)到底在做什麼?

就像生活中的轉接頭,它能讓本來不相容的介面順利溝通。在軟體開發裡,Adapter 模式同樣扮演橋樑角色,讓舊有系統與新系統或外部套件能順利合作。


🤔 什麼時候適合用 Adapter?

  • 既有系統或類別的介面與你需要的不相容。
  • 想使用外部套件,但介面不同,無法直接套用。
  • 希望在不修改既有程式碼的前提下解決介面不合的問題。

🔌 C# Adapter 模式範例

我們以「充電器轉接頭」的例子來說明介面卡模式。

🔋 既有不相容的類別

using System;

/// <summary>
/// 現有的歐洲插座
/// </summary>
public class EuropeanSocket
{
    public void SpecificRequest() => Console.WriteLine("使用歐洲規格的插座");
}

🔋 定義目標介面

/// <summary>
/// 台灣插頭介面
/// </summary>
public interface ITaiwanPlug
{
    /// <summary>
    /// 連接插座
    /// </summary>
    void Request();
}

🔌 建立介面卡

/// <summary>
/// 介面卡:讓歐洲插座能用於台灣插頭
/// </summary>
public class PlugAdapter : ITaiwanPlug
{
    private EuropeanSocket _europeanSocket;

    public PlugAdapter(EuropeanSocket socket)
    {
        _europeanSocket = socket;
    }

    public void Request()
    {
        // 透過轉接頭呼叫原本的歐洲規格插座
        _europeanSocket.SpecificRequest();
        Console.WriteLine("透過介面卡轉接,順利連接到台灣插頭。");
    }
}

🚀 實際使用範例

using System;

class Program
{
    static void Main(string[] args)
    {
        EuropeanSocket europeanSocket = new EuropeanSocket();

        // 透過 Adapter 轉接為台灣插頭介面
        ITaiwanPlug adapter = new PlugAdapter(europeanSocket);
        adapter.Request();
    }
}

🎯 執行結果:

使用歐洲規格的插座
透過介面卡轉接,順利連接到台灣插頭。

⚠️ 使用 Adapter 模式的小提醒

  • 優點:無需修改既有程式碼即可解決介面不相容問題。
  • 缺點:可能增加額外的類別數量,讓架構略顯複雜。

🎉 結語

透過介面卡模式,我們可以讓不同介面之間順暢地溝通與協作,不再為介面不合而煩惱。

持續關注下一篇設計模式介紹吧!