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

.NET 設計模式實戰:適配器模式完整解析與計算庫升級案例

     編輯:關於.NET

模式簡介

適配器模式將一個類別的介面轉換成用戶端期望的另一個介面,讓原本介面不相容的類別能夠合作。屬於結構型模式。

解決問題

  1. 第三方元件介面與現有系統不相容(方法簽章不同等)
  2. 復用舊專案類別,但介面與新系統不符

結構與核心角色

  • Target:用戶端期望的抽象介面(或抽象類別)
  • Adaptee:需被適配的現有類別,介面不符
  • Adapter:實作 Target,內含 Adaptee 實例,將 Request 轉呼叫 Adaptee.SpecificRequest
  • Client:僅依賴 Target 介面
適配器模式結構圖

程式碼實作

// 1. Target
public abstract class Target { public abstract void Request(); }

// 2. Adaptee
public class Adaptee {
    public void SpecificRequest() { Console.WriteLine("執行要適配類的特殊請求方法"); }
}

// 3. Adapter
public class Adapter : Target {
    private Adaptee adaptee;
    public override void Request() {
        if (adaptee == null) adaptee = new Adaptee();
        adaptee.SpecificRequest();
    }
}

// 4. Client
static void Main() {
    Target target = new Adapter();
    target.Request();
    Console.Read();
}
執行結果

實戰案例:計算庫參數型別變更

情境:系統呼叫第三方 Calculator.Add(int, int),升級後變為 Add(float, float)。若直接修改用戶端代碼違反開放封閉原則,引入 CalculatorAdapter 適配器:

  • 實作舊介面 ICalculator { int Add(int a, int b); }
  • 內部持有新版 Calculator 實例
  • Add(int a, int b) → newCalc.Add((float)a, (float)b) 轉型呼叫
變更前呼叫方式 引入適配器後

總結

適配器模式統一不相容介面,讓無法合作的類別能協同運作,是系統整合與遷移常用的關鍵模式。

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