本篇內(nèi)容介紹了“c++橋接模式怎么使用”的有關(guān)知識,在實(shí)際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
成都創(chuàng)新互聯(lián)公司專注于米林網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供米林營銷型網(wǎng)站建設(shè),米林網(wǎng)站制作、米林網(wǎng)頁設(shè)計(jì)、米林網(wǎng)站官網(wǎng)定制、微信小程序服務(wù),打造米林網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供米林網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。c++涉及模式 橋接模式(bridge Pattern)
考慮這樣一個(gè)問題:
需要獲得一個(gè)圖形,這個(gè)圖形可以是圓形,可以是正方形,可以使長方形其顏色可以是藍(lán)色可以是紅色可以是綠色,如果這種情況下將設(shè)計(jì)寫死,那么可以
看到有3*3=9 個(gè)類,但是圖形和顏色更多呢?那么成為一個(gè)基本不能完成的任務(wù),那么在這種情況下我們就需一種叫做橋接的設(shè)計(jì)模式,它的原理同樣是
通過虛函數(shù)進(jìn)行解耦合,實(shí)現(xiàn)方式 圖形抽象類通過一個(gè)輸入顏色抽象類的指針(依賴)來代表顏色,然后通過保存在一個(gè)聚合的顏色抽象類指針成員中,這里
通過這兩圖形抽象類和顏色抽象類進(jìn)行解耦合,同時(shí)能夠?qū)崿F(xiàn)任何顏色和任何圖形之間的組合,也是非常神奇的一種設(shè)計(jì)模式
下面是模式圖:
下面是上面問題的代碼實(shí)現(xiàn):
輸出為:
I'm bule rectangle
I'm red rectangle
I'm green square
I'm bule square
代碼:
#include<iostream>
using namespace std;
//顏色虛接口
class colour
{
public:
virtual void getcol() = 0;
virtual ~colour(){};
};
//形狀虛接口
class graph
{
public:
virtual void setcol(colour* col) = 0; //依賴 橋接
virtual ~graph(){};
protected:
colour* col; //聚合 橋接
};
//顏色具體實(shí)現(xiàn)
class red:public colour
{
public:
virtual void getcol()
{
cout<<"I'm red ";
}
virtual ~red(){};
};
class bule:public colour
{
public:
virtual void getcol()
{
cout<<"I'm bule";
}
virtual ~bule(){};
};
class green:public colour
{
public:
virtual void getcol()
{
cout<<"I'm green ";
}
virtual ~green(){};
};
//形狀具體實(shí)現(xiàn)并且橋接到顏色
class square:public graph
{
public:
square()
{
this->col = NULL ;
}
virtual void setcol(colour* col)
{
this->col = col;
}
void print()
{
this->col->getcol();
cout<<" square\n";
}
virtual ~square(){};
};
class triangle:public graph
{
public:
triangle()
{
this->col = NULL ; ;
}
virtual void setcol(colour* col)
{
this->col = col;
}
void print()
{
this->col->getcol();
cout<<" triangle\n";
}
virtual ~triangle(){};
};
class rectangle:public graph
{
public:
rectangle()
{
this->col = NULL ;
}
virtual void setcol(colour* col)
{
this->col = col;
}
void print()
{
this->col->getcol();
cout<<" rectangle\n";
}
virtual ~rectangle(){};
};
int main(void)
{
bule tblue;
red tred;
green tgreen;
rectangle trectangle;
trectangle.setcol(&tblue); //任意組合
trectangle.print();
trectangle.setcol(&tred); //任意組合
trectangle.print();
square tsquare;
tsquare.setcol(&tgreen); //任意組合
tsquare.print();
tsquare.setcol(&tblue); //任意組合
tsquare.print();
}
“c++橋接模式怎么使用”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!
分享標(biāo)題:c++橋接模式怎么使用-創(chuàng)新互聯(lián)
文章來源:http://jinyejixie.com/article10/dchsgo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)公司、用戶體驗(yàn)、網(wǎng)站策劃、動(dòng)態(tài)網(wǎng)站、小程序開發(fā)、網(wǎng)站營銷
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容