23种设计模式C++源码与UML实现--适配器模式
生活随笔
收集整理的這篇文章主要介紹了
23种设计模式C++源码与UML实现--适配器模式
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
適配器模式
github代碼倉(cāng)庫(kù)
將一個(gè)類(lèi)的接口轉(zhuǎn)換為客戶希望的另外一個(gè)接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些類(lèi)可以一起工作。
UML圖如下:
適用性
-
你想使用一個(gè)已存在的類(lèi),而它的接口不符合你的需求。
-
你想創(chuàng)建一個(gè)可以復(fù)用的類(lèi),該類(lèi)可以與其他不相關(guān)的類(lèi)或不可預(yù)見(jiàn)的類(lèi)協(xié)同工作
-
你想使用一些已經(jīng)存在的子類(lèi),但是不可能對(duì)每一個(gè)都進(jìn)行子類(lèi)化以匹配他們的接口,對(duì)象適配器可以適配它的父類(lèi)接口
代碼實(shí)現(xiàn)
// // Created by andrew on 2020/11/17. //#include <iostream>using namespace std;class Current18v { public:virtual void useCurrent18v() = 0;virtual ~Current18v() {} };class Current220v { public:void useCurrent220v() {cout << "使用 220v" << endl;} };class Adapter : public Current18v { public:Adapter(Current220v *current) {m_current = current;}virtual void useCurrent18v() {cout << "適配 220v";m_current->useCurrent220v();}private:Current220v *m_current; };int main(int argc, char *argv[]) {Current220v *current220v = NULL;Adapter *adapter = NULL;current220v = new Current220v;adapter = new Adapter(current220v);adapter->useCurrent18v();delete adapter;delete current220v;return 0; }可以看到適配器做的工作就是講220v的電壓,轉(zhuǎn)化為用戶需要的18v電壓。
總結(jié)
以上是生活随笔為你收集整理的23种设计模式C++源码与UML实现--适配器模式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【软件测试】黑盒测试の等价类划分法
- 下一篇: 23种设计模式C++源码与UML实现--