設計模式---Adapter模式
轉自:http://blog.csdn.net/fly542/article/details/6713362
首先對介面卡模式做個簡單的使用說明:
在以下各種情況下使用介面卡模式:
1.系統需要使用現有的類,而此類的介面不符合系統的需要。
2.想要建立一個可以重複使用的類,用於與一些彼此之間沒有太大關聯的一些類,包括一些可能在將來引進的類一起工作。這些源類不一定有很複雜的介面。
3.(對物件介面卡而言)在設計裡,需要改變多個已有子類的介面,如果使用類的介面卡模式,就要針對每一個子類做一個介面卡,而這不太實際。
其中有兩種基本的方式來實現介面卡模式,a、類繼承方式(下圖一),b、物件方式(下圖2)
(圖1)
(圖2)
類繼承方式主要通過Adapter繼承Adaptee來從新包裝Adaptee的SpecificRequest到Adapter的Request函式中實現,
物件方式主要通過Adapter中包含Adaptee物件,在Adapter的Request函式中通過呼叫Adaptee屬性物件來呼叫SpecificRequest函式
其中類繼承方式示例程式碼如下
- #include <QtCore/QCoreApplication>
- #include <iostream>
- using namespace std;
- class Target
- {
- public:
- Target(){}
- virtual void request() = 0; /// >子類繼承後實現相應的操作
- };
- class Adaptee
- {
- public:
- Adaptee(){}
- void SpecificRequest()
- {
- cout << " 我是特殊的介面,完成一個一般其他介面完成的不好的功能";
- }
- };
- class Adapter : public Target , private Adaptee
- {
- public:
- Adapter(){}
- virtual void request()
- {
- this->SpecificRequest(); /// >我呼叫特殊物件的功能,因為我繼承了
- }
- };
- int main(int argc, char *argv[])
- {
- QCoreApplication a(argc, argv);
- Target * myTest = new Adapter;
- myTest->request();
- return a.exec();
- }
物件方式的程式碼大致如下
- #include <QtCore/QCoreApplication>
- #include <iostream>
- using namespace std;
- class Target
- {
- public:
- Target(){}
- virtual void request() = 0; /// >子類繼承後實現相應的操作
- };
- class Adaptee
- {
- public:
- Adaptee(){}
- void SpecificRequest()
- {
- cout << " 我是特殊的介面,完成一個一般其他介面完成的不好的功能";
- }
- };
- class Adapter : public Target
- {
- public:
- Adapter(Adaptee* adaptee){ m_special = adaptee}
- virtual void request()
- {
- m_special->SpecificRequest(); /// >我呼叫特殊物件的功能,因為我繼承了
- }
相關文章
- PHP設計模式-Adapter 介面卡模式PHP設計模式APT
- Adapter 介面卡模式(設計模式03)APT設計模式
- 設計模式之介面卡模式(adapter pattern)設計模式APT
- 《設計模式》 - 5. 介面卡模式( Adapter )設計模式APT
- 設計模式筆記:介面卡模式(Adapter)設計模式筆記APT
- Scala 與設計模式(五):Adapter 介面卡模式設計模式APT
- 人人都會設計模式:介面卡模式--Adapter設計模式APT
- C#設計模式-介面卡模式(Adapter Pattern)C#設計模式APT
- 設計模式——6介面卡模式(Adapter)設計模式APT
- 人人都會設計模式---介面卡模式--Adapter設計模式APT
- 設計模式--介面卡模式Adapter(結構型)設計模式APT
- 12/24 設計模式之介面卡模式 Adapter Pattern設計模式APT
- 設計模式的征途—7.介面卡(Adapter)模式設計模式APT
- C#設計模式(7)——介面卡模式(Adapter Pattern)C#設計模式APT
- 人人都會設計模式:04-介面卡模式–Adapter設計模式APT
- 一天一個設計模式(五) - 介面卡模式(Adapter)設計模式APT
- Rust語言之GoF設計模式:介面卡AdapterRustGo設計模式APT
- 關於Adapter模式和Decorator模式APT模式
- 設計模式系列·Adapter模式之如何優雅的使用別人的輪子設計模式APT
- 我所理解的設計模式(C++實現)——介面卡模式(Adapter Pattern)設計模式C++APT
- 我工作的那點事--學習《設計模式》例項應用(Adapter模式)設計模式APT
- 設計模式(Design Patterns)筆記之二:Adapter (轉)設計模式筆記APT
- 設計模式----工廠設計模式設計模式
- 設計模式-工廠設計模式設計模式
- Java設計模式——模板設計模式Java設計模式
- 設計模式---外觀設計模式設計模式
- [設計模式]單例設計模式設計模式單例
- 設計模式-裝飾設計模式設計模式
- 設計模式系列之介面卡模式(Adapter Pattern)——不相容結構的協調設計模式APT
- 設計模式----代理模式設計模式
- 設計模式----中介模式設計模式
- 設計模式——策略模式設計模式
- 設計模式(策略模式)設計模式
- 設計模式-中介模式設計模式
- 設計模式-模板模式設計模式
- 設計模式——模板模式設計模式
- 設計模式——代理模式設計模式
- 設計模式-代理模式設計模式