適配器模式將一個類別的介面轉換成用戶端期望的另一個介面,讓原本介面不相容的類別能夠合作。屬於結構型模式。
// 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) 轉型呼叫
適配器模式統一不相容介面,讓無法合作的類別能協同運作,是系統整合與遷移常用的關鍵模式。