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

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

這篇具有很好參考價值的文章主要介紹了設(shè)計模式-- 3.適配器模式。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

適配器模式

設(shè)計模式-- 3.適配器模式,C and C++的筆記,設(shè)計模式,適配器模式,java
將一個類的接口轉(zhuǎn)換成客戶希望的另外一個接口。使得原本由于接口不兼容而不能一起工作的那些類可以一起工作。

角色和職責(zé)

請求者(client):客戶端角色,需要使用適配器的對象,不需要關(guān)心適配器內(nèi)部的實現(xiàn),只對接目標(biāo)角色。
目標(biāo)角色(Target):目標(biāo)角色,和client直接對接,定義了client需要用到的接口。
這是客戶所期待的接口。目標(biāo)可角色以是具體的或抽象的類,也可以是接口。
源角色(Adaptee):源角色, 需要被進行適配的對象。也叫源對象。
適配器角色(Adapter):適配器角色 適配器,負(fù)責(zé)將源對象轉(zhuǎn)化,給client做適配。
通過在內(nèi)部包裝一個源對象(Adaptee),把源接口轉(zhuǎn)換成目標(biāo)接口。
這四個角色是保證這個設(shè)計模式運行的關(guān)鍵。

代碼演示

源角色

//源角色
class MyPrint 
{
public:
	void operator()(int v1, int v2){//重載operator()
		cout << v1 + v2 << endl;			
	}
};

目標(biāo)角色

//目標(biāo)角色
class Target
{
public:
	virtual void operator()(int v) = 0;
	virtual ~Target(){};
};

適配器角色

//適配器角色
class Adapter : public Target
{
public:
	Adapter(int param){
		this->param = param;
	};
	void operator()(int v) {
		myPrint(v,param);	
	}
private:
	MyPrint myPrint;
	int param;
};

客戶角色

//client
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main(int argc, char *argv[])
{
	vector<int> v;
	for(int i=0;i<10;i++)
	{
		v.push_back(i);
	}
	//for_each(v.begin(),v.end(),MyPrint());//直接傳入源角色對象,不滿足條件,編譯也不會通過
	for_each(v.begin(),v.end(),Adapter(12));//傳入適配器,由適配器內(nèi)部來操作。
	return 0;
}

使用for_each函數(shù),需引入algorithm頭文件,for_each函數(shù)需要三個參數(shù),
第一個first 是迭代器,指向容器中第一個元素,
第二個last 是迭代器,指向容器中最后一個元素的下一個位置。
第三個fn 是一個可調(diào)用對象(函數(shù)指針、函數(shù)對象或Lambda表達(dá)式),它接受容器中元素的引用作為參數(shù)。
for_each函數(shù)原型:

template<class InputIterator, class Function>
  Function for_each(InputIterator first, InputIterator last, Function fn)
{
  for(;first!=last; ++first;) {
    fn (*first);
  }
  return fn;      // or, since C++11: return move(fn);
}

對于不同的函數(shù)調(diào)用,F(xiàn)unction參數(shù)可以表示具有重載的()運算符的類類型。最終,for_ach()代碼將具有一個使用fn()的表達(dá)式。
如果最后的for each()參數(shù)fn是指向函數(shù)的指針,而()調(diào)用該函數(shù)。
如果最后的for each()參數(shù)fn是一個函數(shù)對象(確切的說是函數(shù)對象),則fn將是調(diào)用其重載的operator()運算符的對象。(也是本例中我們使用的)。
for_each 函數(shù) 是一個模板函數(shù),內(nèi)部就是對內(nèi)置的for循環(huán)語句的封裝。基于模板可遍歷符合要求所有容器元素。
函數(shù)對象:重載的operator()運算符的非抽象類,實例化出的對象,可稱為函數(shù)對象??梢韵裾{(diào)用函數(shù)一樣使用函數(shù)對象加([參數(shù)])的方式,會自動調(diào)用重載的operator(),故而稱之為函數(shù)對象。
設(shè)計模式-- 3.適配器模式,C and C++的筆記,設(shè)計模式,適配器模式,java
適配器模式 UML類圖中,客戶端和目標(biāo)角色直接對接。但是我們上面的例子中,for_each()中,傳入的是一個函數(shù)對象。故而直接Client和適配器接觸。文章來源地址http://www.zghlxwxcb.cn/news/detail-799716.html

到了這里,關(guān)于設(shè)計模式-- 3.適配器模式的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 【設(shè)計模式——學(xué)習(xí)筆記】23種設(shè)計模式——適配器模式Adapter(原理講解+應(yīng)用場景介紹+案例介紹+Java代碼實現(xiàn))

    【設(shè)計模式——學(xué)習(xí)筆記】23種設(shè)計模式——適配器模式Adapter(原理講解+應(yīng)用場景介紹+案例介紹+Java代碼實現(xiàn))

    不同國家的插座不同,出國旅游充電器不能直接使用,可以通過使用 多功能轉(zhuǎn)換插頭 來輔助使用 適配器模式將某個類的接口轉(zhuǎn)換成客戶端期望的另一個接口表示,主的目的是兼容性,讓原本因接口不匹配不能一起工作的兩個類可以協(xié)同工作。其別名為包裝器(Wrapper) 適配器模

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

    設(shè)計模式--適配器模式

    目錄 基本介紹 工作原理 類適配模式 介紹 應(yīng)用實例介紹 類適配器模式注意事項和細(xì)節(jié) 對象適配模式 介紹 對象適配器模式注意事項和細(xì)節(jié) 接口適配器模式 介紹 適配器模式的注意事項和細(xì)節(jié) ?(1) 適配器模式(Adapter Pattern) 將某個類的接口轉(zhuǎn)換成客戶端期望的另一個接口表示

    2023年04月26日
    瀏覽(19)
  • 設(shè)計模式——適配器模式

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

    說起適配器其實在我們的生活中是非常常見的,比如:學(xué)校的宿舍的電壓都比較低,而有的學(xué)生想使用大功率電器,宿舍的就會跳閘,然而如果你使用一個適配器(變壓器)就可以使用了(溫馨提示宿舍使用大功率電器不太安全,容易引起火災(zāi),希望大家謹(jǐn)慎使用)。 又比如

    2024年02月12日
    瀏覽(35)
  • 設(shè)計模式-適配器模式

    設(shè)計模式-適配器模式

    在我們生活中,插座輸出的電源都是220V的,而我們手機充電需要的電壓基本都是5V的。我們不能直接用220V的電壓來給手機充電,也不能說專門有線路來提供5V的電壓。所以就有了充電器,充電器可以將220V的電壓轉(zhuǎn)為5V的電壓,這樣我們就方便太多了。 上面所說的充電器其實就

    2024年02月08日
    瀏覽(34)
  • 【設(shè)計模式】適配器模式

    【設(shè)計模式】適配器模式

    適配器模式(Adapter Pattern)是作為兩個不兼容的接口之間的橋梁。這種類型的設(shè)計模式屬于結(jié)構(gòu)型模式,它結(jié)合了兩個獨立接口的功能。 這種模式涉及到一個單一的類,該類負(fù)責(zé)加入獨立的或不兼容的接口功能。舉個真實的例子,讀卡器是作為內(nèi)存卡和筆記本之間的適配器。

    2024年02月12日
    瀏覽(32)
  • 設(shè)計模式 06 適配器模式

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

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

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

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

    2024年01月18日
    瀏覽(25)
  • 設(shè)計模式四:適配器模式

    設(shè)計模式四:適配器模式

    1、適配器模式的理解 適配器模式可以理解為有兩個現(xiàn)成的類Adaptee和Target,它們兩個是不能動的,要求必須使用B這個類來實現(xiàn)一個功能,但是A的內(nèi)容是能復(fù)用的,這個時候我們需要編寫一個轉(zhuǎn)換器 適配器模式 Adaptee:被適配者,現(xiàn)有的接口或者類; Adapter:適配器類,適配器

    2024年02月22日
    瀏覽(24)
  • 《設(shè)計模式》之適配器模式

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

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

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

    適配器設(shè)計模式

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

    2024年02月11日
    瀏覽(22)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包