設(shè)計模式_3

第3部分 ? ? 接 口 適 配



第8章 ? ?適 ?配 ?器


何為適配器模式

基本上有兩種實現(xiàn)適配器的方式。第一種是通過繼承來適配兩個接口检激,這稱為類適配器。類適配器是通過多重繼承實現(xiàn)的。

實現(xiàn)適配器模式的第二種方式稱為對象適配器胶台。與類適配器不同假褪,對象適配器不繼承被適配者署咽,而是組合了一個對它的引用。

適配器模式:將一個類的接口轉(zhuǎn)換成客戶希望的另為一個接口生音。適配器模式使得原本由于接口不兼容而不能一起工作的那些類可以一起工作宁否。

類適配器與對象適配器的對比:

類適配器:只針對單一的具體Adaptee,把Adaptee適配到Target ; 易于重載Adaptee的行為,因為是通過直接的子類化進(jìn)行的適配缀遍; 只有一個Adapter對象慕匠,無需額外的指針間接訪問Adaptee。

對象適配器:可以適配多個Adaptee及其子類域醇;難以重載Adaptee的行為台谊,需要借助于子類的對象而不是Adaptee本身蓉媳;需要額外的指針以間接訪問Adaptee并適配其行為。

何時使用適配器模式:

在以下情形青伤,自然會想到使用這一模式

- 已有類的接口與需求不匹配督怜;

- 想要一個可復(fù)用的類,該類能夠同可能帶有不兼容接口的其他類協(xié)作狠角;

- 需要適配一個類的幾個不同子類号杠,可是讓每一個子類去子類化一個類適配器又不實現(xiàn)。



第9章 ? ? 橋 ? 接


橋接模式: 將抽象部分與它的實現(xiàn)部分分離丰歌,使它們都可以獨立地變化姨蟋。

橋接模式的目的是把抽象層次結(jié)構(gòu)從其實實現(xiàn)中分離出來,使其能夠獨立變更立帖。抽象層定義了供客戶端使用的上層的抽象接口眼溶。實現(xiàn)層次結(jié)構(gòu)定義了供抽象層次使用的底層接口。實現(xiàn)類的引用被封裝于抽象層的實例中時晓勇,橋接就形成了堂飞。

何時使用橋接模式

- 不想在抽象與其實現(xiàn)之間形成固定的綁定關(guān)系(這樣就能在運(yùn)行時切換實現(xiàn))

- ?抽象及其實現(xiàn)都應(yīng)可以通過子類化獨立進(jìn)行擴(kuò)展;

- 對抽象的實現(xiàn)進(jìn)行修改不應(yīng)影響客戶端代碼绑咱;

- 如果每個實現(xiàn)需要額外的子類以細(xì)化抽象绰筛,則說明有必要把透明分成兩個部分;

- 想在帶有不同抽象接口的多個對象之間共享一個實現(xiàn)描融。

總結(jié): 本章討論了如何使用橋接模式來實現(xiàn)在iOS上運(yùn)行的仿真器應(yīng)用程序铝噩。沒有深入研究實現(xiàn)真正仿真器的額外細(xì)節(jié),只是重點探討了橋接模式能幫助我們解決的幾個設(shè)計問題窿克。橋接模式是把一個接口適配到不同接口的一種方式骏庸。下一章,將介紹另一種設(shè)計模式年叮,它不僅能夠?qū)⒉煌慕涌诮M合起來具被,而且可以把它們簡化成單一入口,就像建筑物的外觀(正門)一樣谋右。


第10章? ? 外? 觀

外觀模式為子系統(tǒng)中一組不同的接口提供統(tǒng)一的接口硬猫。外觀定義了一個高層接口,通過降低復(fù)雜度和隱藏子系統(tǒng)間的通信及依存關(guān)系改执,讓子系統(tǒng)更易于使用啸蜜。

何時使用外觀模式

- 子系統(tǒng)正逐漸變得復(fù)雜。應(yīng)用模式的過程中演化出許多類辈挂〕暮幔可以使用外觀為這些子系統(tǒng)類提供一個較簡單的接口。

- 可以使用外觀對子系統(tǒng)進(jìn)行分層终蒂。每個子系統(tǒng)級別有一個外觀作為入口點蜂林。讓他們通過其外觀進(jìn)行通信遥诉,可以簡化它們的依賴關(guān)系。

總結(jié): 當(dāng)程序逐漸變大變復(fù)雜時噪叙,會有越來越多小型的類從設(shè)計和應(yīng)用模式中演化出來矮锈。如果沒有一種簡化的方式來使用這些類,客戶端代碼最終將變得越來越大睁蕾、越來越難以理解苞笨,而且,維護(hù)起來會繁瑣無趣子眶。外觀有助于提供一種更為簡潔的方式來使用子系統(tǒng)中的這些類瀑凝。處理這些子系統(tǒng)類的默認(rèn)行為的,可能只是定義在外觀中的一個簡單的方法臭杰,而不必直接去使用這些類粤咪。

本書的這一部分介紹了幾個設(shè)計模式,它們主要針對用更簡單的接口或用不同的接口去適配各種接口渴杆。下一個部分中的設(shè)計模式用于分離協(xié)同工作的多個對象寥枝,這些對象具有共同或不同接口。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末磁奖,一起剝皮案震驚了整個濱河市脉顿,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌点寥,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件来吩,死亡現(xiàn)場離奇詭異敢辩,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)弟疆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進(jìn)店門戚长,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人怠苔,你說我怎么就攤上這事同廉。” “怎么了柑司?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵迫肖,是天一觀的道長。 經(jīng)常有香客問我攒驰,道長蟆湖,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任玻粪,我火速辦了婚禮隅津,結(jié)果婚禮上诬垂,老公的妹妹穿的比我還像新娘。我一直安慰自己伦仍,他們只是感情好结窘,可當(dāng)我...
    茶點故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著充蓝,像睡著了一般隧枫。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上棺克,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天悠垛,我揣著相機(jī)與錄音,去河邊找鬼娜谊。 笑死确买,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的纱皆。 我是一名探鬼主播湾趾,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼派草!你這毒婦竟也來了搀缠?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤近迁,失蹤者是張志新(化名)和其女友劉穎艺普,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鉴竭,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡歧譬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了搏存。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瑰步。...
    茶點故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖璧眠,靈堂內(nèi)的尸體忽然破棺而出缩焦,到底是詐尸還是另有隱情,我是刑警寧澤责静,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布袁滥,位于F島的核電站,受9級特大地震影響泰演,放射性物質(zhì)發(fā)生泄漏呻拌。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一睦焕、第九天 我趴在偏房一處隱蔽的房頂上張望藐握。 院中可真熱鬧靴拱,春花似錦、人聲如沸猾普。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽初家。三九已至偎窘,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間溜在,已是汗流浹背陌知。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留掖肋,地道東北人仆葡。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像志笼,于是被迫代替她去往敵國和親沿盅。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,933評論 2 355

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