Android設(shè)計(jì)模式-16-中介者模式

1. 定義

又稱:調(diào)解者/調(diào)停者模式

包裝了一系列對(duì)象相互作用的方式,用來降低這些對(duì)象之間的通信復(fù)雜性奴饮,從中協(xié)調(diào)充當(dāng)牽線搭橋的作用

2. 使用場景

系統(tǒng)中對(duì)象之間存在比較復(fù)雜的引用關(guān)系襟交,導(dǎo)致它們之間的依賴關(guān)系結(jié)構(gòu)混亂迈倍,而且難以復(fù)用該對(duì)象

想通過一個(gè)中間類來封裝多個(gè)類中的行為,而又不想生成太多的子類

3. 優(yōu)缺點(diǎn)

優(yōu)點(diǎn):

使得這些對(duì)象不必相互明顯作用捣域,從而實(shí)現(xiàn)松耦合

當(dāng)某些對(duì)象之間的作用發(fā)生改變時(shí)啼染,不會(huì)影響其他對(duì)象,保證獨(dú)立變化

將多對(duì)多的相互作用轉(zhuǎn)化為一對(duì)多的相互作用,由復(fù)雜的網(wǎng)狀結(jié)構(gòu)變?yōu)橐灾薪檎邽橹行牡男切徒Y(jié)構(gòu)

缺點(diǎn):中介者會(huì)龐大焕梅,變得復(fù)雜難以維護(hù)

4. Android源碼中的使用

Android的鎖屏(Keyguard)是一個(gè)非常重要的模塊迹鹅。包含的功能有:解鎖(指紋、圖案贞言、PIN等)斜棚、鎖屏通知顯示、快速啟動(dòng)相機(jī)该窗、快速撥號(hào)弟蚀、顯示日期/時(shí)間等。其中KeyguardViewMediator是整個(gè)待機(jī)解/鎖屏業(yè)務(wù)的調(diào)度器酗失,負(fù)責(zé)調(diào)度鎖屏界面的相關(guān)動(dòng)作及查詢解鎖屏狀態(tài)义钉,其中包含了許多XXXManager的管理器成員變量,如AlarmManager规肴,StatusBarManager捶闸,PowerManager等,KeyguardViewMediator則是充當(dāng)中介者協(xié)調(diào)這些管理器的狀態(tài)改變

Binder機(jī)制中ServiceManager和Binder Driver充當(dāng)中介者拖刃,協(xié)調(diào)服務(wù)端與客戶端

5. 實(shí)例演示

以電腦播放CD為例鉴嗤,主板作為中介者,協(xié)調(diào)cpu序调,內(nèi)存醉锅,顯卡,聲卡发绢,光驅(qū)等模塊硬耍,這些模塊間等通信都是通過主板進(jìn)行等垄琐,對(duì)其中任何一個(gè)進(jìn)行更改(如升級(jí)換新)都不會(huì)影響到其他模塊,只需要調(diào)整其與主板間到連接即可经柴,主板再通知其他模塊作出相應(yīng)調(diào)整

1. 首先創(chuàng)建一個(gè)中介者基類

2. 創(chuàng)建主板類

3. 創(chuàng)建一個(gè)模塊基類狸窘,相當(dāng)于實(shí)際中各模塊與主板連接的硬件接口協(xié)議或軟件驅(qū)動(dòng)協(xié)議,這些都是有統(tǒng)一標(biāo)準(zhǔn)的

4. 各模塊的實(shí)現(xiàn)類坯认,CPU翻擒,光驅(qū),聲卡牛哺,顯卡等, 從代碼中可以看到陋气,各模塊只負(fù)責(zé)自己職責(zé)范圍的工作,將處理結(jié)果通知給主板引润,由主板來協(xié)調(diào)下一步需要做什么巩趁,模塊間實(shí)現(xiàn)解耦

5創(chuàng)建實(shí)例,完成播放CD的流程

上面執(zhí)行cd播放的具體流程如下:

光驅(qū)調(diào)用load()方法讀取cd淳附,讀取完成后通知主板-->主板收到通知后议慰,將光驅(qū)讀取到的數(shù)據(jù)傳給cpu去解碼-->cpu解析數(shù)據(jù),解析完成后通知主板-->主板收到通知后奴曙,將cpu解碼出的音視頻流傳給聲卡, 顯卡播放-->聲卡顯卡播放音視頻, 至此就完成來cd的播放

我是今陽别凹,如果想要進(jìn)階和了解更多的干貨,歡迎關(guān)注公眾號(hào)”今陽說“接收我的最新文章

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末洽糟,一起剝皮案震驚了整個(gè)濱河市番川,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌脊框,老刑警劉巖颁督,帶你破解...
    沈念sama閱讀 222,252評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異浇雹,居然都是意外死亡沉御,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門昭灵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來吠裆,“玉大人,你說我怎么就攤上這事烂完∈愿恚” “怎么了?”我有些...
    開封第一講書人閱讀 168,814評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵抠蚣,是天一觀的道長祝旷。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么怀跛? 我笑而不...
    開封第一講書人閱讀 59,869評(píng)論 1 299
  • 正文 為了忘掉前任距贷,我火速辦了婚禮,結(jié)果婚禮上吻谋,老公的妹妹穿的比我還像新娘忠蝗。我一直安慰自己,他們只是感情好漓拾,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,888評(píng)論 6 398
  • 文/花漫 我一把揭開白布阁最。 她就那樣靜靜地躺著,像睡著了一般骇两。 火紅的嫁衣襯著肌膚如雪速种。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,475評(píng)論 1 312
  • 那天脯颜,我揣著相機(jī)與錄音哟旗,去河邊找鬼贩据。 笑死栋操,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的饱亮。 我是一名探鬼主播矾芙,決...
    沈念sama閱讀 41,010評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼近上!你這毒婦竟也來了剔宪?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,924評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤壹无,失蹤者是張志新(化名)和其女友劉穎葱绒,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體斗锭,經(jīng)...
    沈念sama閱讀 46,469評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡地淀,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,552評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了岖是。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片帮毁。...
    茶點(diǎn)故事閱讀 40,680評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖豺撑,靈堂內(nèi)的尸體忽然破棺而出烈疚,到底是詐尸還是另有隱情,我是刑警寧澤聪轿,帶...
    沈念sama閱讀 36,362評(píng)論 5 351
  • 正文 年R本政府宣布爷肝,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏阶剑。R本人自食惡果不足惜跃巡,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,037評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望牧愁。 院中可真熱鬧素邪,春花似錦、人聲如沸猪半。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽磨确。三九已至沽甥,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間乏奥,已是汗流浹背摆舟。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評(píng)論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留邓了,地道東北人恨诱。 一個(gè)月前我還...
    沈念sama閱讀 49,099評(píng)論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像骗炉,于是被迫代替她去往敵國和親照宝。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,691評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容