四窘哈、橋接模式 組合模式

橋接模式

將類的抽象部分與實(shí)現(xiàn)相分離

抽象部分與實(shí)現(xiàn)想分離吹榴,在成員函數(shù)方面用的是繼承,多態(tài)滚婉。
而在橋接模式是針對(duì)類的數(shù)據(jù)成員图筹。
如何將類的數(shù)據(jù)成員的抽象和實(shí)現(xiàn)想分離?
用的還是繼承:子類指針可以轉(zhuǎn)化為父類指針让腹。

想象一個(gè)場(chǎng)景:
電腦和操作系統(tǒng)远剩,電腦有很多戴爾、聯(lián)想骇窍、三星瓜晤。但是操作系統(tǒng)也有不少,win腹纳、linux痢掠、unix驱犹。
如果我們要描述一臺(tái)電腦,那么如果采用組合的方式足画,那么將至少有9個(gè)類來(lái)表示這些組合雄驹。

而橋接模式就是為了解決這個(gè)問(wèn)題的。

電腦可以擁有操作系統(tǒng)锌云,所以電腦這個(gè)類擁有一個(gè)win荠医、linux、unix的基類指針桑涎,那么電腦就可以擁有這三種不同的操作系統(tǒng)了。這個(gè)積累的指針就是這個(gè)“橋”兼贡,連鏈接一個(gè)要組合在一起的兩個(gè)對(duì)象攻冷。

//操作系統(tǒng)的基類
class OS
{
public:
  virtual  int version()=0;
};

//具體的操作系統(tǒng),另外還有win遍希、unix
class linux:public OS
{
public:
  virtual int version();
};

//電腦的基類
class Computer
{
public:
  vtual void installOs(OS *os)=0;
};

//具體的電腦類
class Dell"public Computer
{
public:
  virtual void installOs(Os *os);
private:
  OS* _os;
};

//或者也可以在構(gòu)造函數(shù)里傳入嘛等曼。

這就是橋接模式,說(shuō)白了就是一個(gè)可變類型的數(shù)據(jù)成員凿蒜,但是擁有相同的特征禁谦。
但是其實(shí),也是可以使用枚舉類型废封。也是可以實(shí)現(xiàn)這個(gè)的功能州泊。

組合模式

模糊葉和枝干(枝干上可以在包含葉),為葉和枝干提供統(tǒng)一的管理方式

這個(gè)模式應(yīng)用的比較窄啊漂洋。
比如文件夾系統(tǒng)遥皂,還有菜單系統(tǒng),還有現(xiàn)實(shí)的樹(shù)干和葉刽漂。

為葉和枝干提供統(tǒng)一的管理模式演训,讓我們?cè)谠L問(wèn)的時(shí)候忽略其具體的類型。使用其統(tǒng)一的接口來(lái)訪問(wèn)贝咙。

上面這句話就清楚了透露出样悟,這兩個(gè)類型應(yīng)該可以放在同一個(gè)容器里,這兩個(gè)類型有相同的訪問(wèn)方式庭猩。所以這兩個(gè)類型應(yīng)該繼承自同一個(gè)類窟她。

但是葉和枝干的表現(xiàn)形式不同,所以其接口的行為也是不同的眯娱。比如葉不能再添加子節(jié)點(diǎn)(也就是再添加葉了)礁苗。所以這里有有兩種模式

  1. 透明方式:基類中提供統(tǒng)一的接口,這樣實(shí)現(xiàn)了徙缴,忽略具體類型试伙。但是如果為也葉節(jié)點(diǎn)添加元素嘁信,只能在運(yùn)行的時(shí)候報(bào)錯(cuò)。
  2. 安全方式:基類中不提供全部的接口疏叨,需要根據(jù)具體類型選擇接口潘靖,這樣在編譯的時(shí)候就能發(fā)現(xiàn)錯(cuò)誤。

既然組合模式蚤蔓,我覺(jué)得就應(yīng)該使用透明的方式卦溢,然后在實(shí)現(xiàn)的時(shí)候,子類不應(yīng)該含有的方法直接提示錯(cuò)誤秀又。也可以達(dá)到安全的方式单寂。

最后另一個(gè)問(wèn)題,一個(gè)枝干上可以有多個(gè)葉吐辙,而且以后還會(huì)添加宣决,所以其存儲(chǔ)元素的應(yīng)該是一個(gè)容器,存儲(chǔ)其基類指針的容器昏苏,而且尊沸,應(yīng)該是一個(gè)weak_ptr,不過(guò)這個(gè)就忽略了。

//提供統(tǒng)一的方式
class Node
{
public:
  virtual void add(Node*)=0;
  virtual void remove(Node*)=0;
  virtual Node* show(int index)=0;
};

class left:public Node
{
//贤惯。洼专。。孵构。
private:
  vector<Node*> _list;
};

class Branch:public Node
{
//屁商。。浦译。
private:
  vector<Node*> _list;
};
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末棒假,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子精盅,更是在濱河造成了極大的恐慌帽哑,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,695評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件叹俏,死亡現(xiàn)場(chǎng)離奇詭異妻枕,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)粘驰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門屡谐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人蝌数,你說(shuō)我怎么就攤上這事愕掏。” “怎么了顶伞?”我有些...
    開(kāi)封第一講書人閱讀 168,130評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵饵撑,是天一觀的道長(zhǎng)剑梳。 經(jīng)常有香客問(wèn)我,道長(zhǎng)滑潘,這世上最難降的妖魔是什么垢乙? 我笑而不...
    開(kāi)封第一講書人閱讀 59,648評(píng)論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮语卤,結(jié)果婚禮上追逮,老公的妹妹穿的比我還像新娘。我一直安慰自己粹舵,他們只是感情好钮孵,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,655評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著齐婴,像睡著了一般油猫。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上柠偶,一...
    開(kāi)封第一講書人閱讀 52,268評(píng)論 1 309
  • 那天,我揣著相機(jī)與錄音睬关,去河邊找鬼诱担。 笑死,一個(gè)胖子當(dāng)著我的面吹牛电爹,可吹牛的內(nèi)容都是我干的蔫仙。 我是一名探鬼主播,決...
    沈念sama閱讀 40,835評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼丐箩,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼摇邦!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起屎勘,我...
    開(kāi)封第一講書人閱讀 39,740評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤施籍,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后概漱,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體丑慎,經(jīng)...
    沈念sama閱讀 46,286評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,375評(píng)論 3 340
  • 正文 我和宋清朗相戀三年瓤摧,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了竿裂。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,505評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡照弥,死狀恐怖腻异,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情这揣,我是刑警寧澤悔常,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布影斑,位于F島的核電站,受9級(jí)特大地震影響这嚣,放射性物質(zhì)發(fā)生泄漏鸥昏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,873評(píng)論 3 333
  • 文/蒙蒙 一姐帚、第九天 我趴在偏房一處隱蔽的房頂上張望吏垮。 院中可真熱鬧,春花似錦罐旗、人聲如沸膳汪。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,357評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)遗嗽。三九已至,卻和暖如春鼓蜒,著一層夾襖步出監(jiān)牢的瞬間痹换,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,466評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工都弹, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留娇豫,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,921評(píng)論 3 376
  • 正文 我出身青樓畅厢,卻偏偏與公主長(zhǎng)得像冯痢,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子框杜,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,515評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容