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