1. 程式人生 > >設計模式:介面卡,橋接,代理模式的區別

設計模式:介面卡,橋接,代理模式的區別

介面卡模式:

將一個類的介面轉換成客戶希望的另一個介面,使得原本由於介面不相容而不能一起工作的那些類可以一起工作。

比如:手機的usb資料線可以被看做介面卡,不同的手機通過不同的usb資料線連線到電腦相同的usb介面上。還有,棧和佇列被稱為容器介面卡,他們本身都是基於線性表來實現的,但是對外提供了特定的操作介面。

介面卡模式舉例:usb介面

橋接模式:

主要目的是將一個物件的主要因素抽象出來,不是通過類繼承的方式來滿足這個因素的變化,而是通過物件組合的方式來依賴因素的抽象。這樣當依賴的因素的具體實現發生變化後,而我們具體的引用卻不用發生改變,因為我們的物件是依賴於抽象的,而不是具體的實現。應對多維度的變化(圖形:矩形 圓形 三角形等   顏色:白色 黃色 黑色 組合在一起,有兩個變化因素)

使用場景:

(1)當一個物件有多個變化因素的時候,通過抽象這些變化因素,將依賴具體實現,修改為依賴抽象。

(2)當某個變化物件在多個物件中共享時,我們可以抽象出這個變化因素,然後實現這些不同的變化因素。

(3)當我們期望一個物件的多個變化因素可以動態的變化,而且不影響客戶的程式的使用時。

代理模式:

不同點:

介面卡模式(原物件,適配物件,目標物件):解決了不相容問題,將類自己的介面包裹在一個已存在的介面中,介面卡類與原有類有相同的介面。將一個類通過某種方式轉變為另一個類。

代理模式:用一個類去呼叫另一個類的方法,不對這個類進行直接操作。特點在於隔離,隔離呼叫類與被呼叫類的關係,通過一個代理類與呼叫。將一個類轉換成具體的操作類。

橋接模式:以組合的方式依賴因素的抽象。適應多維度的變化。