国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

設(shè)計(jì)模式——適配器

這篇具有很好參考價(jià)值的文章主要介紹了設(shè)計(jì)模式——適配器。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

1、引言

說起適配器,大家第一個(gè)想到的可能就是電源適配器。
電源適配器的作用想必同學(xué)們也都清楚,那就是將220伏高電壓轉(zhuǎn)換成想要的5伏至20伏左右穩(wěn)定的低電壓。
從某種程度上講,編程中經(jīng)常提起的適配器模式的原理與上面講到的基本是一致的。

2、什么是適配器模式

用于將一個(gè)類的接口轉(zhuǎn)換成另一個(gè)客戶端所期望的接口形式。
適配器模式使得原本由于接口不兼容而無法一起工作的類可以協(xié)同工作。
通常的話,我們會(huì)在以下幾種場(chǎng)景中使用到它。

  1. 對(duì)已存在的類庫進(jìn)行封裝和適配,以便能夠與其他新的系統(tǒng)或框架協(xié)同工作。
  2. 在不修改現(xiàn)有代碼的情況下,適配新的接口規(guī)范。
  3. 在使用第三方組件時(shí),適配器可以將其接口轉(zhuǎn)換成自定義的接口形式。
  4. 將多個(gè)類或接口進(jìn)行統(tǒng)一的適配,使得它們之間可以互相替換。

舉個(gè)例子,大家在實(shí)際項(xiàng)目中使用第三方組件時(shí),都會(huì)存在第三方組件設(shè)計(jì)的接口與項(xiàng)目實(shí)際使用的接口不一致,無法直接調(diào)用的情況。
這種場(chǎng)景下,我們通常會(huì)聲明一個(gè)類對(duì)第三方接口進(jìn)行封裝,提供項(xiàng)目需要的接口。
以sqlite為例,sqlite只提供了C風(fēng)格的接口,因此我們可以通過SqliteWrapper類來進(jìn)行C++風(fēng)格的封裝。

class SqliteWrapper {
 private:
  sqlite3* m_conn;
  uint32_t m_retry;
  uint32_t m_timeout;
  sqlite3_stmt* m_stmt;

  std::string errStr;
  int errCode;

 public:
  SqliteWrapper(uint32_t retry, uint32_t timeout);

  virtual ~SqliteWrapper() { Close(); }

  virtual SQLErr Open(std::string& dbName, std::string& user, std::string& pass,
                      std::string& port);
  virtual SQLErr Close();
  virtual SQLErr Begin();
  virtual SQLErr Commit();
  virtual SQLErr RollBack();
  virtual SQLErr PrepareStatement(std::string& sql);
  virtual SQLErr Execute();
  virtual SQLErr Next();
  virtual SQLErr Statement(std::string& sql);
  virtual int GetLastError(std::string& err);

  void SetLastError(int action, const char* err);
  void SetLastError(int action);
  void ClearLastError();
};
  • 類適配器
    通過多重繼承來適配接口。適配器類繼承目標(biāo)接口,并且同時(shí)繼承了需要適配的類或接口。
  • 對(duì)象適配器
    通過組合關(guān)系來適配接口。適配器類持有適配者對(duì)象,并實(shí)現(xiàn)目標(biāo)接口,將原始接口的調(diào)用委托給適配者對(duì)象。
  • 接口適配器(Interface Adapter):
    接口適配器也稱為缺省適配器或者抽象適配器。
    接口適配器通過定義一個(gè)抽象適配器類,該類實(shí)現(xiàn)了目標(biāo)接口并提供了默認(rèn)空實(shí)現(xiàn)。
    其他具體適配器類可以選擇性地覆蓋抽象適配器類的方法來完成適配。
    接口適配器主要用于解決目標(biāo)接口較多,但實(shí)際只需要使用其中部分方法的情況。

3、優(yōu)缺點(diǎn)

  • 優(yōu)點(diǎn):
    1) 提供了一種解耦的方式,使得原本不兼容的類可以獨(dú)立演化。
    2)可以復(fù)用已存在的類,實(shí)現(xiàn)了類的復(fù)用。
    3)可以在不修改已有代碼的情況下進(jìn)行接口的轉(zhuǎn)換和適配。

  • 缺點(diǎn):
    1)引入適配器類會(huì)增加代碼的復(fù)雜性,使代碼變得難以理解。
    2)不適合頻繁變化的接口。如果接口經(jīng)常發(fā)生變化,那么適配器的維護(hù)成本可能會(huì)很高,因?yàn)樾枰粩喔逻m配器以適應(yīng)接口的變化。
    3)適配器模式可以彌補(bǔ)接口不匹配的問題,但有時(shí)也可能隱藏了系統(tǒng)設(shè)計(jì)上的問題。文章來源地址http://www.zghlxwxcb.cn/news/detail-531100.html

4、裝飾器與適配器的區(qū)別

裝飾者模式 適配器模式
定義 裝飾者和被裝飾者都實(shí)現(xiàn)同一個(gè)接口,主要目的是為了拓展之后依舊保持OOP關(guān)系 適配器和被適配者沒有必然的聯(lián)系,通常采用代理的形式進(jìn)行包裝
關(guān)系 滿足 is-a 的關(guān)系 滿足 has-a 的關(guān)系
功能 注重覆蓋、擴(kuò)展 注重兼容、轉(zhuǎn)換
設(shè)計(jì) 前置考慮 后置考慮

到了這里,關(guān)于設(shè)計(jì)模式——適配器的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 設(shè)計(jì)模式 06 適配器模式

    適配器模式(Adapter Pattern)屬于 結(jié)構(gòu)型 模式 結(jié)構(gòu)型 模式關(guān)注如何將現(xiàn)有的類或?qū)ο蠼M織在一起形成更加強(qiáng)大的結(jié)構(gòu)。 在生活中,我們經(jīng)常遇到這樣的一個(gè)問題:輕薄筆記本通常只有 type-c 或者 usb-a 接口,沒有網(wǎng)口。但日常使用中是往往需要連接網(wǎng)口上網(wǎng)的,這時(shí)想到的第

    2024年02月11日
    瀏覽(19)
  • 設(shè)計(jì)模式-- 3.適配器模式

    設(shè)計(jì)模式-- 3.適配器模式

    將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另外一個(gè)接口。使得原本由于接口不兼容而不能一起工作的那些類可以一起工作。 請(qǐng)求者(client):客戶端角色,需要使用適配器的對(duì)象,不需要關(guān)心適配器內(nèi)部的實(shí)現(xiàn),只對(duì)接目標(biāo)角色。 目標(biāo)角色(Target):目標(biāo)角色,和client直接對(duì)接,定義

    2024年01月18日
    瀏覽(26)
  • 《設(shè)計(jì)模式》之適配器模式

    《設(shè)計(jì)模式》之適配器模式

    把一個(gè)類的接口轉(zhuǎn)換成客戶端所期待的另一種接口,從而使原接口不匹配而無法再一起工作的兩個(gè)類能在一起工作。 在軟件系統(tǒng)中,由于應(yīng)用環(huán)境的變化,常常需要將“一些現(xiàn)存的對(duì)象”放在新的環(huán)境中應(yīng)用,但是新環(huán)境要求的接口是這些現(xiàn)存對(duì)象所不能滿足的。 如何應(yīng)對(duì)

    2024年02月09日
    瀏覽(22)
  • 適配器設(shè)計(jì)模式

    適配器設(shè)計(jì)模式

    一、適配器模式 B站:java架構(gòu)師 定義:適配器模式把一個(gè)類的接口變換成客戶端所期待的另一種接口,從而使原本因接口不匹配而無法在一起工作的兩個(gè)類能夠在一起工作 三種適配器:類的適配器模式、對(duì)象的適配器模式、接口的適配器模式 1.類適配器模式 實(shí)現(xiàn)方式:讓

    2024年02月11日
    瀏覽(22)
  • 設(shè)計(jì)模式——適配器

    說起適配器,大家第一個(gè)想到的可能就是電源適配器。 電源適配器的作用想必同學(xué)們也都清楚,那就是將220伏高電壓轉(zhuǎn)換成想要的5伏至20伏左右穩(wěn)定的低電壓。 從某種程度上講,編程中經(jīng)常提起的適配器模式的原理與上面講到的基本是一致的。 用于將一個(gè)類的接口轉(zhuǎn)換成另

    2024年02月12日
    瀏覽(20)
  • 【設(shè)計(jì)模式】使用適配器模式做補(bǔ)償設(shè)計(jì)

    【設(shè)計(jì)模式】使用適配器模式做補(bǔ)償設(shè)計(jì)

    適配器模式是一種 結(jié)構(gòu)型設(shè)計(jì)模式 ,它提供了一個(gè)中間層,通過這個(gè)中間層,客戶端可以使用統(tǒng)一的接口與具有不同接口的類進(jìn)行交互,也就是說,將一個(gè)接口轉(zhuǎn)換成客戶期望的另一個(gè)接口,使得原本不兼容的接口能夠協(xié)同工作。 舉個(gè)現(xiàn)實(shí)中的例子,我們現(xiàn)在的很多輕薄筆

    2024年02月22日
    瀏覽(24)
  • 【設(shè)計(jì)模式】適配器模式怎么理解?

    【設(shè)計(jì)模式】適配器模式怎么理解?

    什么是轉(zhuǎn)換器模式? 轉(zhuǎn)換器模式是一種結(jié)構(gòu)型設(shè)計(jì)模式, 主要用于在兩種不同類型的對(duì)象之間進(jìn)行轉(zhuǎn)換,而不需要改變?cè)偷膶?shí)際邏輯。這是一種在軟件設(shè)計(jì)中經(jīng)常使用的模式 ,它有助于保持代碼的整潔和組織。在軟件開發(fā)中,我們經(jīng)常會(huì)遇到在不同層之間轉(zhuǎn)換對(duì)象的需求

    2024年01月25日
    瀏覽(21)
  • Java 設(shè)計(jì)模式——適配器模式

    Java 設(shè)計(jì)模式——適配器模式

    (1)如果去歐洲國家去旅游的話,他們的插座如下圖最左邊,是歐洲標(biāo)準(zhǔn)。而我們使用的插頭如下圖最右邊的。因此我們的筆記本電腦,手機(jī)在當(dāng)?shù)夭荒苤苯映潆?。所以就需要一個(gè)插座轉(zhuǎn)換器,轉(zhuǎn)換器第1面插入當(dāng)?shù)氐牟遄?,?面供我們充電,這樣使得我們的插頭在當(dāng)?shù)啬苁?/p>

    2024年02月16日
    瀏覽(24)
  • 設(shè)計(jì)模式-適配器模式 Adapter

    適配器設(shè)計(jì)模式(Adapter Design Pattern)是一種結(jié)構(gòu)型設(shè)計(jì)模式,用于 解決兩個(gè)不兼容接口之間的問題 。適配器允許 將一個(gè)類的接口轉(zhuǎn)換為客戶端期望的另一個(gè)接口,使得原本由于接口不兼容而不能一起工作的類可以一起工作。 在適配器設(shè)計(jì)模式中,主要包含以下四個(gè)角色:

    2024年02月19日
    瀏覽(16)
  • 設(shè)計(jì)模式之適配器模式筆記

    設(shè)計(jì)模式之適配器模式筆記

    記錄下學(xué)習(xí)設(shè)計(jì)模式-適配器模式的寫法。JDK使用版本為1.8版本。 意圖 :將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另外一個(gè)接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些類可以一起工作。 結(jié)構(gòu) : 其中: Target定義Client使用的與特定領(lǐng)域相關(guān)的接口。 Client與符合Targ

    2024年02月10日
    瀏覽(18)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包