在現(xiàn)實(shí)生活中,我們常常會用到兩種或多種類型的筆,比如毛筆和蠟筆。假設(shè)我們需要大、中、小三種類型的畫筆來繪制12中不同的顏色,如果我們使用蠟筆,需要準(zhǔn)備3*12=36支。但如果使用毛筆的話,只需要提供3種型號的毛筆,外加12個顏料盒即可,涉及的對象個數(shù)僅為3+12=15,遠(yuǎn)遠(yuǎn)小于36卻能實(shí)現(xiàn)與36支蠟筆同樣的功能。如果需要新增一種畫筆,并且同樣需要12種顏色,那么蠟筆需要增加12支,而毛筆卻只需要新增1支。通過分析,在蠟筆中,顏色和型號兩個不同的變化維度耦合在一起,無論對其中任何一個維度進(jìn)行擴(kuò)展,都勢必會影響另外一個維度。但在毛筆中,顏色和型號實(shí)現(xiàn)了分離,增加新的顏色或者型號都對另外一方?jīng)]有任何影響。在軟件系統(tǒng)中,有些類型由于自身的邏輯,它具有兩個或多個維度的變化。為了解決這種多維度變化,又不引入復(fù)雜度,這就要使用今天介紹的Bridge橋接模式。
橋接模式(Bridge) | 學(xué)習(xí)難度:★★★☆☆ | 使用頻率:★★★☆☆ |
一、跨平臺的圖像瀏覽系統(tǒng)
1.1 需求介紹
M公司開發(fā)部想要開發(fā)一個跨平臺的圖像瀏覽系統(tǒng),要求該系統(tǒng)能夠顯示JPG、BMP、GIF、PNG等多種格式的文件,并且能夠在Windows、Linux以及Unix等多個操作系統(tǒng)上運(yùn)行。該系統(tǒng)首先將各種格式的文件解析為像素矩陣(Matrix),然后將像素矩陣顯示在屏幕上,在不同的操作系統(tǒng)中可以調(diào)用不同的繪制函數(shù)來繪制像素矩陣。該系統(tǒng)需要具備較好的擴(kuò)展性以支持新的文件格式和操作系統(tǒng)。
1.2 初始設(shè)計
M