15.桥接模式
A:定義好抽象的接口類。
B:對(duì)于不同的情況不同實(shí)現(xiàn)。但是實(shí)現(xiàn)是要求和模板的定義的相同。
2橋接模式的作用:說白了就是定義類模板,然后實(shí)現(xiàn)。
3橋接模式具體描述
//橋接模式:將抽象化與實(shí)現(xiàn)化脫耦,使得二者可以獨(dú)立的變化
//也就是說將他們之間的強(qiáng)關(guān)聯(lián)變成弱關(guān)聯(lián)
//也就是指在一個(gè)軟件系統(tǒng)的抽象化和實(shí)現(xiàn)化之間使用組合
?
//聚合關(guān)系而不是繼承關(guān)系,從而使兩者可以獨(dú)立的變化。
?
//早上碰到MM,要說早上好,晚上碰到MM,要說晚上好。
//碰到MM穿了新衣服,要說你的衣服好漂亮哦,碰到MM做新的發(fā)型,要說
//你的頭發(fā)好漂亮哦。不要問我"早上碰到MM新做了個(gè)發(fā)型怎么說"
//這種問題,自己用GRIDGE組好一下不就行了。
4橋接模式類圖
5.代碼:
#include<iostream>
#include<string>
usingnamespacestd;
//橋接模式:將抽象化與實(shí)現(xiàn)化脫耦,使得二者可以獨(dú)立的變化
//也就是說將他們之間的強(qiáng)關(guān)聯(lián)變成弱關(guān)聯(lián)
//也就是指在一個(gè)軟件系統(tǒng)的抽象化和實(shí)現(xiàn)化之間使用組合
?
//聚合關(guān)系而不是繼承關(guān)系,從而使兩者可以獨(dú)立的變化。
?
//早上碰到MM,要說早上好,晚上碰到MM,要說晚上好。
//碰到MM穿了新衣服,要說你的衣服好漂亮哦,碰到MM做新的發(fā)型,要說
//你的頭發(fā)好漂亮哦。不要問我"早上碰到MM新做了個(gè)發(fā)型怎么說"
//這種問題,自己用GRIDGE組好一下不就行了。
?
classHandsetSoft
{
public:
???virtualvoidrun() = 0;
};
?
classHandsetGame :publicHandsetSoft
{
public:
???voidrun()
???{
???????cout <<"運(yùn)行手機(jī)游戲" << endl;
???}
};
?
classHandsetAddressList :publicHandsetSoft
{
public:
???voidrun()
???{
???????cout <<"運(yùn)行手機(jī)通訊錄" << endl;
???}
};
?
classHandsetBrand
{
protected:
???HandsetSoft *soft;
public:
???voidsetHandsetSoft(HandsetSoft *soft)
???{
???????this->soft = soft;
???}
???virtualvoidrun() = 0;
};
?
classHandsetBrandN :publicHandsetBrand
{
public:
???voidrun()
???{
???????soft->run();
???}
};
?
classHandsetBrandM :publicHandsetBrand
{
public:
???voidrun()
???{
???????soft->run();
???}
};
?
intmain()
{
???HandsetBrand *hb;
???hb =newHandsetBrandM();
?
???hb->setHandsetSoft(newHandsetGame());
???hb->run();
???hb->setHandsetSoft(newHandsetAddressList());
???hb->run();
?
???cin.get();
???return 0;
}
?
運(yùn)行結(jié)果如下:
總結(jié)