15.桥接模式
A:定義好抽象的接口類。
B:對于不同的情況不同實現。但是實現是要求和模板的定義的相同。
2橋接模式的作用:說白了就是定義類模板,然后實現。
3橋接模式具體描述
//橋接模式:將抽象化與實現化脫耦,使得二者可以獨立的變化
//也就是說將他們之間的強關聯變成弱關聯
//也就是指在一個軟件系統的抽象化和實現化之間使用組合
?
//聚合關系而不是繼承關系,從而使兩者可以獨立的變化。
?
//早上碰到MM,要說早上好,晚上碰到MM,要說晚上好。
//碰到MM穿了新衣服,要說你的衣服好漂亮哦,碰到MM做新的發型,要說
//你的頭發好漂亮哦。不要問我"早上碰到MM新做了個發型怎么說"
//這種問題,自己用GRIDGE組好一下不就行了。
4橋接模式類圖
5.代碼:
#include<iostream>
#include<string>
usingnamespacestd;
//橋接模式:將抽象化與實現化脫耦,使得二者可以獨立的變化
//也就是說將他們之間的強關聯變成弱關聯
//也就是指在一個軟件系統的抽象化和實現化之間使用組合
?
//聚合關系而不是繼承關系,從而使兩者可以獨立的變化。
?
//早上碰到MM,要說早上好,晚上碰到MM,要說晚上好。
//碰到MM穿了新衣服,要說你的衣服好漂亮哦,碰到MM做新的發型,要說
//你的頭發好漂亮哦。不要問我"早上碰到MM新做了個發型怎么說"
//這種問題,自己用GRIDGE組好一下不就行了。
?
classHandsetSoft
{
public:
???virtualvoidrun() = 0;
};
?
classHandsetGame :publicHandsetSoft
{
public:
???voidrun()
???{
???????cout <<"運行手機游戲" << endl;
???}
};
?
classHandsetAddressList :publicHandsetSoft
{
public:
???voidrun()
???{
???????cout <<"運行手機通訊錄" << 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;
}
?
運行結果如下:
總結
- 上一篇: 13.命令模式
- 下一篇: 人民军队始终是党和人民完全可以信赖的英雄