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

C++ 設計模式:適配器模式(類適配器 vs 對象適配器)完整講解

     編輯:關於C++

模式動機

現有系統需使用第三方類 Adaptee,但其接口 specificRequest() 與系統期望的 Target::request() 不兼容。適配器將 Adaptee 包裝為 Target 子類,實現接口轉換。

兩種實現形式

1. 類適配器(多重繼承)

class Adapter : public Target {
    Adaptee* adaptee;
public:
    Adapter() : adaptee(new Adaptee) {}
    void request() override { adaptee->specificRequest(); }
    ~Adapter() { delete adaptee; }
};
  • 優點:靈活,可適配 Adaptee 及其子類,符合「組合優於繼承」。
  • 缺點:難以重寫 Adaptee 的行為(需子類化)。

UML 結構

類適配器

對象適配器

完整可運行示例

specificRequest(); }
};

void client_code(Target* t) { t->request(); }

int main() {
    Target* t1 = new Target;
    Target* t2 = new Adapter;
    client_code(t1); // Target::request
    client_code(t2); // Adaptee::specificRequest
    delete t1; delete t2;
}

適用場景

  • 復用現有類但接口不匹配。
  • 創建可復用類,需與未知類協同工作。
  • (對象適配器)適配多個現有子類。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved