Bridge 、 Adapter 和 Facade 的区别
Bridge和Adapter是沒有關系的,而和Facade比較象,但在我的經驗中更多的時候是會混淆Bridge和adapter而不是Facade,這里詳細的列出三個模式的比較。
?
一. 定義:
1、Facade模式是為一個復雜系統提供一個簡單的接口。比如你要去博物館參觀,很多東西,你一個個到處去問每個東西的管理員很麻煩,所以你找一個導游,讓他給你一個個介紹,你只要找到導游就好了。導游就是門面。
2、適配器模式,適配器模式是把一個類的接口變換成客戶端所期待的另一種接口,從而使原本因接口不匹配而無法工作的兩個類能夠工作到一起。例如變壓器
3、Bridge模式,橋梁模式的用意是"將抽象化與實現化脫耦,使的二者可以獨立變化。例如AWT的實現
?
二. 目的:
1、Facade模式使用在給一個復雜的系統提供統一的門面(接口),目的是簡化客戶端的操作,但并沒有改變接口。
2、Adapter模式使用在兩個部分有不同的接口的情況,目的是改變接口,使兩個部分協同工作。
3、橋梁模式是為了分離抽象和實現。
三. 使用場合
1、Facade模式出現較多的情況是這樣的情況,你有一個復雜的系統,對應了各種情況,客戶看了說功能不錯,但是使用太麻煩。你說沒問題,我給你提供一個統一的門面。
所以Facade使用的場合多是對系統的"優化"。
2、Adapter模式出現的情況是這樣,你有一個類提供接口A,但是你的客戶需要一個實現接口B的類,這個時候你可以寫一個Adapter讓把A接口變成B接口,所以Adapter使用的場合是指鹿為馬。就是你受夾板氣的時候,一邊告訴你我只能提供給你A(鹿),一邊告訴你說我只要B(馬),他長了四條腿,你沒辦法了,把鹿牽過去說,這是馬,你看他有四條腿。(當然實現指鹿為馬也有兩種方法,一個方法是你只露出鹿的四條腿,說你看這是馬,這種方式就是封裝方式的Adapter實現,另一種方式是你把鹿牽過去,但是首先介紹給他說這是馬,因為他長了四條腿這種是繼承的方式。)
3、Bridge模式在一般的開發中出現的情況并不多,AWT是一個,SWT也算部分是,如果你的客戶要求你開發一個系統,這個系統在Windows下運行界面的樣子是Windows的樣子。在Linux下運行是Linux下的樣子。在Macintosh下運行要是Mac Os的樣子。怎么辦? 定義一系列的控件Button,Text,radio,checkBox等等。供上層開發者使用,他們使用這些控件的方法,利用這些控件構造一個系統的GUI,然后你為這些控件寫好Linux的實現,讓它在Linux上調用Linux本地的對應控件,在Windows上調用Windows本地的對應控件,在Macintosh上調用Macintosh本地的對應控件。ok。你的任務完成了。
四. 需求程度
1、Facade的需求程度是"中等",因為你不提供Facade程序照樣能工作,只是不夠好。
2、Adapter的需求程度是"必須",因為你不這么做就不能工作,除非你自己從頭實現一個。
3、Bridge的需求程度是"一般",適合精益求精的人,因為你可以寫三個程序給客戶。
五. 出現時期
1、Facade出現在項目中期,再優化
2、Adapter出現在項目后期,大部分都有了,差的僅僅是接口不同
3、Bridge出現在項目前期,你想讓你的系統更靈活,更cool
六. 在寫文章的時候想到的
1、Facade很多時候是1:m的關系。
2、Adapter很多是候是1:1的關系。
3、Bridge很多時候是m:n的關系。
轉載于:https://www.cnblogs.com/DreamRecorder/p/10640686.html
總結
以上是生活随笔為你收集整理的Bridge 、 Adapter 和 Facade 的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mybatis的dao向mapper.x
- 下一篇: axios中的qs