【設(shè)計模式】適配器模式與外觀模式

設(shè)計模式: 適配器模式

定義:適配器模式將一個類的接口,轉(zhuǎn)換成客戶期望的另一個接口进倍。適配器讓原本接口不兼容的類可以合作無間。
這個模式可以通過創(chuàng)建適配器進行接口轉(zhuǎn)換,讓不兼容的接口變成兼容晓勇。這可以讓客戶從實現(xiàn)中解耦。如果在一段時間之后灌旧,我們想要改變接口,適配器可以將改變的部分封裝起來绰筛,客戶就不必為了應(yīng)對不同的接口而每次跟著修改枢泰。

對象和類的適配器
類適配器通過多重繼承實現(xiàn),對象適配器通過組合來實現(xiàn)铝噩。類適配器不是使用組合來適配被適配者衡蚂,而是繼承被適配者和目標(biāo)類。

  • 對象適配器可以適配某個類和其子類骏庸,類適配器不用重新實現(xiàn)整個被適配者毛甲,也可以覆蓋其行為。
  • 對象適配器具有更大的彈性具被,但是會有更多的子類玻募,一旦接口發(fā)生變更,對象適配器的改動更大

裝飾者和適配器

  • 適配器“一定”會進行接口的轉(zhuǎn)換一姿,裝飾者則“不一定”七咧,裝飾者的意圖是擴展所包裝對象的行為或責(zé)任

設(shè)計模式:外觀模式

定義:外觀模式提供了一個統(tǒng)一的接口,用來訪問子系統(tǒng)中的一群接口叮叹。外觀定義了一個高層接口艾栋,讓子系統(tǒng)更容易使用。
外觀的意圖是提供一個簡單的接口蛉顽,好讓一個子系統(tǒng)更容易使用蝗砾。


設(shè)計原則

最少知識原則:只和你的密友交談
當(dāng)你正在設(shè)計一個系統(tǒng),不管是任何對象,你都要注意他所交互的類有哪些悼粮,并注意它和這些類是如何交互的拇泣。
這個原則希望我們在設(shè)計中,不要讓太多的類耦合在一起矮锈,免得修改系統(tǒng)中的一部分霉翔,會影響到其他部分。如果許多類之間相互依賴苞笨,那么這個系統(tǒng)就會變成一個易碎的系統(tǒng)债朵,他需要花許多成本維護,也因為太復(fù)雜而不容易被其他人了解瀑凝。

一些指導(dǎo)方針:在任何對象的方法內(nèi)序芦,我們應(yīng)該只調(diào)用屬于如下范圍的方法

  • 該對象本身
  • 被當(dāng)做方法參數(shù)傳進來的對象
  • 此方法所創(chuàng)建或?qū)嵗萌魏螌ο?br> 這些方針告訴我們,如果某對象調(diào)用其他的方法返回結(jié)果粤咪,不要調(diào)用該對象的方法谚中。
  • 對象的任何組件
    把“組件“想象成 是被實例變量所引用的任何對象,換句話說寥枝,把這想象成是“有一個”(HAS—A)關(guān)系宪塔。

這個原則可以減少對象之間的依賴,減少軟件維護的成本囊拜,但采用這個原則也會導(dǎo)致更多的“包裝”類被制造出來某筐,以處理和其他組件的溝通,這可能會導(dǎo)致復(fù)雜度和開發(fā)時間的增加冠跷,并降低運行時性能南誊。


要點:

  • 當(dāng)需要使用一個現(xiàn)有的類而其接口并不符合你的需要時,就使用適配器
  • 當(dāng)需要簡化并統(tǒng)一一個很大的接口或者一群復(fù)雜的接口時蜜托,使用外觀
  • 適配器改變接口以符合客戶的期望
  • 外觀將客戶從一個復(fù)雜的子系統(tǒng)中解耦
  • 實現(xiàn)一個適配器可能需要一番功夫抄囚,也可能不費功夫,視目標(biāo)接口的大小與復(fù)雜程度而定
  • 實現(xiàn)一個外觀橄务,需要將子系統(tǒng)組合進外觀中幔托,然后將工作委托給子系統(tǒng)執(zhí)行
  • 適配器有兩種形式:對象適配器和類適配器。類適配器需要用到多重繼承
  • 你可以為一個子系統(tǒng)實現(xiàn)一個以上的外觀
  • 適配器將一個對象包裝起來以改變其接口仪糖;裝飾者將一個對象包裝起來以增加新的行為和責(zé)任柑司;而外觀將一群對象“包裝“起來以簡化其接口
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市锅劝,隨后出現(xiàn)的幾起案子攒驰,更是在濱河造成了極大的恐慌,老刑警劉巖故爵,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件玻粪,死亡現(xiàn)場離奇詭異隅津,居然都是意外死亡,警方通過查閱死者的電腦和手機劲室,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進店門伦仍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人很洋,你說我怎么就攤上這事充蓝。” “怎么了喉磁?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵谓苟,是天一觀的道長。 經(jīng)常有香客問我协怒,道長涝焙,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任孕暇,我火速辦了婚禮仑撞,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘妖滔。我一直安慰自己隧哮,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布铛楣。 她就那樣靜靜地躺著近迁,像睡著了一般。 火紅的嫁衣襯著肌膚如雪簸州。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天歧譬,我揣著相機與錄音岸浑,去河邊找鬼。 笑死瑰步,一個胖子當(dāng)著我的面吹牛矢洲,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播缩焦,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼读虏,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了袁滥?” 一聲冷哼從身側(cè)響起盖桥,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎题翻,沒想到半個月后揩徊,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年塑荒,在試婚紗的時候發(fā)現(xiàn)自己被綠了熄赡。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡齿税,死狀恐怖彼硫,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情凌箕,我是刑警寧澤拧篮,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站陌知,受9級特大地震影響他托,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜仆葡,卻給世界環(huán)境...
    茶點故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一赏参、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧沿盅,春花似錦把篓、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至窖铡,卻和暖如春疗锐,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背费彼。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工滑臊, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人箍铲。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓雇卷,卻偏偏與公主長得像,于是被迫代替她去往敵國和親颠猴。 傳聞我的和親對象是個殘疾皇子关划,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,901評論 2 355

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

  • 前言:設(shè)計模式之結(jié)構(gòu)型模式軟件模式與具體的應(yīng)用領(lǐng)域無關(guān),也就是說無論你從事的是移動應(yīng)用開發(fā)、桌面應(yīng)用開發(fā)翘瓮、Web ...
    markfork閱讀 2,452評論 4 13
  • 我的筆記本電腦的工作電壓是20V贮折,而我國的家庭用電是220V,如何讓20V的筆記本電腦能夠在220V的電壓下工作春畔?...
    justCode_閱讀 1,425評論 0 5
  • 我的筆記本電腦的工作電壓是20V脱货,而我國的家庭用電是220V岛都,如何讓20V的筆記本電腦能夠在220V的電壓下工作?...
    justCode_閱讀 736評論 0 1
  • 目錄 本文的結(jié)構(gòu)如下: 什么是適配器模式 為什么要用該模式 模式的結(jié)構(gòu) 代碼示例 優(yōu)點和缺點 適用環(huán)境 模式應(yīng)用 ...
    w1992wishes閱讀 874評論 0 3
  • 設(shè)計模式匯總 一振峻、基礎(chǔ)知識 1. 設(shè)計模式概述 定義:設(shè)計模式(Design Pattern)是一套被反復(fù)使用臼疫、多...
    MinoyJet閱讀 3,947評論 1 15