設計模式C 描述

2021-12-29 22:04:45 字數 2053 閱讀 5212

一. 定義

介面卡模式將乙個類的介面轉換成客戶希望的另外乙個介面,使得原本由於介面不相容而不能一起工作的那些類可以一起工作。

adapter 模式的兩種類別:類模式和物件模式。

二. 舉例說明

實際中,我們為了完成某項工作購買了乙個第三方的庫來加快開發。這個庫可能都是一些.dll檔案,這就帶來了乙個問題!我們在應用程式中已經設計好了介面,與這個第三方提供的介面不一致,為了使得這些介面不相容的類(不能在一起工作)可以在一起工作了,adapter模式提供了將乙個類(第三方庫)的介面轉化為客戶(購買使用者)希望的介面的方法。

三. **實現

類模式的adapter採用繼承的方式復用adaptee的介面。

[cpp] //目標類,可以想像成客戶所期代的介面  

class target   

virtual ~target() 

virtual void request() 

};  

//被適應者,可以看成 dll 提供的介面  

class adaptee   

virtual ~adaptee() 

void specificrequest() 

};  

//介面卡類,通過在內部包裝被適應者物件 adaptee  

//把源介面(specificrequest)轉換成目標介面(request)  

class adapter: public target, private adaptee 

};   

//測試**  

int main(int argc,char* ar**) 

//目標類,可以想像成客戶所期代的介面

class target

virtual ~target()

virtual void request()

};//被適應者,可以看成 dll 提供的介面

class adaptee

virtual ~adaptee()

void specificrequest()

};//介面卡類,通過在內部包裝被適應者物件 adaptee

//把源介面(specificrequest)轉換成目標介面(request)

class adapter: public target, private adaptee

};//測試**

int main(int argc,char* ar**)

物件模式的adapter中則採用組合的方式實現adaptee的復用。

[cpp] //目標類 www.2cto.com   

class target 

virtual void request() 

};  

//被適應類  

class adaptee   

void specificrequest() 

};  

//介面卡類,用於轉接兩者的介面  

class adapter:public target   

void request() 

private: 

adaptee* _ade; 

};  

//測試**  

int main(int argc,char* ar**) 

//目標類

class target

virtual void request()

};//被適應類

class adaptee

void specificrequest()

};//介面卡類,用於轉接兩者的介面

class adapter:public target

void request()

private:

adaptee* _ade;

};//測試**

int main(int argc,char* ar**)

四. 說明

1. 當介面不同時,首先不應該考慮用介面卡,而是應該考慮通過重構統一介面。

2. 使用介面卡模式是無奈之舉,通常在軟體開發後期或維護期再考慮使用。

作者 lwbeyond

設計模式C 描述

一.概念 單例模式 其意圖是保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點,該例項被所有程式模組共享。cpp class csingleton 私有建構函式,防止例項化 private csingleton 私有靜態指標變數,指向類的唯一例項 private static csingleto...

設計模式C 描述

一.概述 在物件導向系統的設計何實現中,建立物件是最為常見的操作。這裡面就有乙個問題 如果乙個應用程式使用了太多的物件,就會造成很大的儲存開銷。特別是對於大量輕量級 細粒度 的物件,比如在文件編輯器的設計過程中,我們如果沒有為字母建立乙個物件的話,系統可能會因為大量的物件而造成儲存開銷的浪費。例如乙...

設計模式 簡介 C 描述

second60 20180424 設計模式,在物件導向設計語言中,是非常重要的思想。無論是架構設計,還是在平常的功能開發,用了設計模式,會如虎添冀。如擴充套件性方面,一些設計模式,新加乙個類繼承原有父類,即可不修改 的情況,支援了新的功能。下面,我會歸納總結下23種設計模式,網上也有很多例子,盡量...