柚子快報(bào)激活碼778899分享:結(jié)構(gòu)型模式之適配器模式
柚子快報(bào)激活碼778899分享:結(jié)構(gòu)型模式之適配器模式
一、概述
1、適配器模式:將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另一個(gè)接口。適配器模式讓那些接口不兼容的類可以一起工作。
2、別名為包裝器模式
3、適配器分為類適配器和對(duì)象適配器
二、適配器模式的結(jié)構(gòu)
適配器模式包含以下三個(gè)角色:
1、Target(目標(biāo)抽象類,目標(biāo)接口類)
2、Adaptee(適配者類,源接口類)
3、Adapter(適配器類)
三、UML圖
1、類適配器
2、對(duì)象適配器
四、模式優(yōu)點(diǎn)
1、將目標(biāo)類和是配置類解耦,通過(guò)引入一個(gè)適配器類來(lái)重用現(xiàn)有的適配者類,無(wú)需修改原有結(jié)構(gòu)
2、增加了類的透明性和復(fù)用性,提高了適配者的復(fù)用性,同一個(gè)適配者類可以在多個(gè)不同的系統(tǒng)中復(fù)用
3、靈活性和擴(kuò)展性好
4、類適配器模式:置換一些適配者的方法很方便
5、類對(duì)象適配器模式:可以把多個(gè)不同的適配者適配到同一個(gè)目標(biāo),還可以適配一個(gè)適配者的子類。
五、模式缺點(diǎn)
1、類適配器模式:
(1)一次最多只能適配一個(gè)適配者類,不能同時(shí)適配多個(gè)適配者
(2)適配者類不能為最終類
(3)目標(biāo)抽象類只能為接口,不能成為類
2、對(duì)象適配器模式:
(1)在適配器中換適配者類的某些方法比較麻煩
六、示列代碼
#include
using namespace std;
//目標(biāo)抽象類
class ScoreOp
{
public:
virtual void sort() = 0;
virtual void search() = 0;
};
//適配者類1
class QuickSortClass
{
public:
void QuickSort()
{
cout << "調(diào)用快速排序!" << endl;
}
};
//設(shè)配者類2
class BinarySearchClass
{
public:
void BinarySearch()
{
cout << "調(diào)用二分查找!" << endl;
}
};
//適配器類
class Adapter : public ScoreOp
{
public:
void sort()
{
m_quick.QuickSort();
}
void search()
{
m_binary.BinarySearch();
}
private:
QuickSortClass m_quick;
BinarySearchClass m_binary;
};
int main()
{
ScoreOp* op = new Adapter();
op->sort();
op->search();
}
柚子快報(bào)激活碼778899分享:結(jié)構(gòu)型模式之適配器模式
參考閱讀
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。