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