標(biāo)簽(空格分隔):橋接模式
橋接模式: 將抽象部分與它的實(shí)現(xiàn)部分分離,使它們都可以獨(dú)立的變化
由于對(duì)象的繼承關(guān)系是在編譯的時(shí)候確認(rèn)的,所以不能做到在運(yùn)行時(shí)改變父類繼承的實(shí)現(xiàn)。同時(shí),子類的實(shí)現(xiàn)必須在父類的基礎(chǔ)上進(jìn)行,和父類有相當(dāng)緊密的依賴關(guān)系。這樣就導(dǎo)致父類一旦有功能變化的時(shí)候都會(huì)導(dǎo)致子類同時(shí)發(fā)生變化,此時(shí)如果繼承下父類的實(shí)現(xiàn)不適合解決新問(wèn)題的時(shí)候,子類就必須重寫(xiě)自己對(duì)應(yīng)的實(shí)現(xiàn),或者選擇繼承其他更貼合自己業(yè)務(wù)場(chǎng)景的類作為自己的父類。這種子父關(guān)系自己的相互依賴關(guān)系導(dǎo)致了一個(gè)功能的變化可能會(huì)造成相當(dāng)大的業(yè)務(wù)變化。
- 依照合成/聚合復(fù)用原則,可以使用擁有的方式來(lái)代替繼承關(guān)系。
橋接模式主要解決:子類需要繼承的父類是一個(gè)不穩(wěn)定狀態(tài)的類,功能極有可能發(fā)生變化且這種變化是不可控的,這個(gè)時(shí)候使用繼承會(huì)導(dǎo)致類的變動(dòng)頻繁,出現(xiàn)類爆炸問(wèn)題,這個(gè)時(shí)候,使用橋接模式,將其分離開(kāi)來(lái),減少他們之間的耦合關(guān)系。
優(yōu)點(diǎn):將對(duì)象之間的抽象和實(shí)現(xiàn)分離開(kāi),讓抽象也成為可獨(dú)立可實(shí)現(xiàn)的部分,增加系統(tǒng)的擴(kuò)展能力。
VMWare虛擬機(jī)中就存在橋接模式(bridged networking),在這種模式下,VMWare虛擬出來(lái)的操作系統(tǒng)脫離與宿主機(jī)器之間的父子關(guān)系,就像是局域網(wǎng)中的一臺(tái)獨(dú)立的主機(jī),虛擬機(jī)不必依賴宿主系統(tǒng)的IP/DNS功能。它可以訪問(wèn)網(wǎng)內(nèi)任何一臺(tái)機(jī)器。橋接模式將虛擬系統(tǒng)脫離出來(lái),由原有的繼承狀態(tài)(Nat模式,虛擬系統(tǒng)必須通過(guò)宿主系統(tǒng)中的網(wǎng)絡(luò)地址轉(zhuǎn)換Nat功能來(lái)訪問(wèn)公網(wǎng))獨(dú)立出來(lái),轉(zhuǎn)換為和宿主機(jī)器一樣的獨(dú)立的個(gè)體,改為被宿主機(jī)器持有。