設計模式專輯——適配器模式、橋接模式、裝飾器模式、代理模式的比較

 >>版權聲明:本文爲原創文章,請不要拷貝轉載。微信

 

1.比較函數

(適配器模式)3d

(橋接模式)代理

 

 

(裝飾器模式)對象

 

(代理模式)blog

把這四個模式放在一塊兒感受至關微妙。籠統的講,它們都彷佛是間接引用real object,是對real object的封裝,接口與實現的分離。繼承

他們之間的區別是很微妙的,尤爲是適配器和橋接之間,裝飾器和代理之間的區別。接口

 

適配器和橋接之間幾乎沒有區別,只能說他們出發點,目的,解決的問題不一樣。圖片

適配器:適配器的目的是將一種現存的已實現接口轉換成調用者須要的接口。調用者須要的接口是固定的,已存在的。實際調用的接口以及它的實現也是固定的,已存在的。如今要把二者關聯上。支付寶

橋接:橋接的目的是分離抽象與具體實現,使它們不直接繼承。使用橋接模式的時候,項目纔剛搭建,不存在具體的實現。橋接是主動爲之,橋接創造了接口與實現分離,適配器偏偏想要彌合這種分離的狀態。

因此從類圖和最終的代碼實現上是看不出實際的區別的。

 

裝飾器和代理之間的區別很細微,看了不少人的解釋,都沒法自圓其說。有一個比較合理的說法,即裝飾器是代理的一個子集。

裝飾器:裝飾器的目的是保存接口不變的狀況下,在現有實現的基礎上添加功能。裝飾器模式下,real object是做爲構造函數的參數傳入的,以此來實現運行時對real object動態添加功能。

代理:代理的目的是提供一個代理來控制調用者調用。代理模式存在兩種狀況,一種是預先內置了一個real object對象,這種狀況下在編譯時就肯定了效果;另外一種是經過構造函數的參數傳入real object,這種狀況就很是相似裝飾器了。

 

實際運用當中,其實沒有必要區分的那麼清楚。我想咱們仍是應該遵循從目的出發,選擇合適的模式解決當前的問題。 

 

 注:圖片來自維基百科

 

喜歡的話能夠打賞一下哦!!!

支付寶

微信

相關文章
相關標籤/搜索