一、概念
分離抽象部分和實現(xiàn)部分酱虎,將系統(tǒng)中兩個獨立變化的聚合關(guān)聯(lián)的維度抽象出來雨膨。將兩個維度在抽象層建立關(guān)聯(lián),通過子類進(jìn)行擴(kuò)展读串,維度間解耦聊记,具體類改變,不會影響其他恢暖。
Android系統(tǒng)使用橋接模式的場景排监,常用的ListView和Adapter。ListView和GridView都繼承AbsListView抽象類胀茵,排列視圖集合社露,負(fù)責(zé)具體的排列方式,這是一個第一個維度琼娘,Adapter提供負(fù)責(zé)提供每一個ItemView視圖峭弟,這是第二個維度。
兩個維度關(guān)聯(lián)脱拼,抽象類AbsListView中包含ListAdapter對象瞒瘸,通過setAdapter方法設(shè)置。ListAdapter接口的子類BaseAdapter熄浓,可以擴(kuò)展CursorAdapter和ArrayAdapter以及用戶自定義Adapter情臭,橋接設(shè)計模式結(jié)構(gòu)圖。
AbsListView是一種關(guān)聯(lián)ListAdapter的AdapterView赌蔑,從根源上講俯在,它的父類AdapterView<Adapter>泛型類才是基類,AbsListView<ListAdapter>只是其中的一類擴(kuò)展娃惯。
ListAdapter的子類跷乐,可以擴(kuò)展出任意我們需要的子視圖。
AbsListView的子類趾浅,可以將視圖集合按照我們?nèi)我獾南敕ㄅ帕秀堤幔虼寺裕陨蟽蓚€維度可以無限擴(kuò)展,并且獨立浅侨,即橋接設(shè)計模式纽谒。
Android系統(tǒng)中,另一個橋接模式是Window和WindowManager如输,Window是一個抽象類鼓黔,在手機設(shè)備上PhoneWindow類,WindowManager是一個接口挨决,管理窗體狀態(tài)和視圖请祖,WindowManagerImpl實現(xiàn)類,委托給WindowManagerGlobal脖祈。
Window窗體關(guān)聯(lián)WindowManager肆捕,不同的設(shè)備可以擴(kuò)展不同的窗體,在WindowManager的維度盖高,也可以有不同的實現(xiàn)慎陵。
二、設(shè)計模式中的幾種關(guān)系
關(guān)聯(lián)關(guān)系喻奥,單純的包含關(guān)系席纽,引用。沒有整體和部分一說撞蚕。
聚合關(guān)系润梯,整體包含部分,部分可以脫離整體對立存在甥厦。
組合關(guān)系纺铭,部分脫離整體不會單獨存在。
依賴關(guān)系刀疙,方法參數(shù)傳入依賴對象舶赔。
接口實現(xiàn)。
繼承關(guān)系谦秧。
任重而道遠(yuǎn)