Android設(shè)計(jì)模式之外觀模式

外觀模式

1.定義:

要求一個(gè)子系統(tǒng)的外部與其內(nèi)部的通信必須通過一個(gè)統(tǒng)一的對(duì)象進(jìn)行。外觀模式提供一個(gè)高層次的接口拷窜,使得子系統(tǒng)更易于使用旷祸。

2.使用場(chǎng)景:

  • 為一個(gè)復(fù)雜子系統(tǒng)提供一個(gè)簡(jiǎn)易接口叉庐。外觀模式可以提供一個(gè)簡(jiǎn)單統(tǒng)一的接口宏多,對(duì)外隱藏子系統(tǒng)的具體實(shí)現(xiàn)、隔離變化嗦随;
  • 當(dāng)你需要構(gòu)建一個(gè)層次結(jié)構(gòu)的子系統(tǒng)時(shí)列荔,使用外觀模式定義子系統(tǒng)中每層的入口點(diǎn)。如果各子系統(tǒng)之間是相互依賴的枚尼,那么通過外觀模式進(jìn)行接口通信贴浙,使得各子系統(tǒng)之間相互解耦,達(dá)到各子系統(tǒng)互不依賴的效果署恍。

3.UML圖

4.詳解:

外觀模式是開發(fā)過程中使用頻率極高的一種結(jié)構(gòu)型設(shè)計(jì)模式崎溃。假如現(xiàn)在需要開發(fā)一個(gè)第三方SDK,一般都會(huì)使用外觀模式盯质,對(duì)外隱藏系統(tǒng)內(nèi)部的實(shí)現(xiàn)細(xì)節(jié)袁串,僅提供一個(gè)統(tǒng)一的接口供外部調(diào)用,這樣既減低了用戶使用成本呼巷,也對(duì)用戶屏蔽了很多的實(shí)現(xiàn)細(xì)節(jié)囱修。
下面看代碼舉例:

private static class SubSystemA {
        private void start() {
            System.out.println("sub system A start");
        }

        private void end() {
            System.out.println("sub system A end");
        }
    }

    private static class SubSystemB {
        private void start() {
            System.out.println("sub system B start");
        }

        private void end() {
            System.out.println("sub system B end");
        }
    }

    private static class SubSystemC {
        private void start() {
            System.out.println("sub system C start");
        }

        private void end() {
            System.out.println("sub system C end");
        }
    }

上面三個(gè)類表示整個(gè)系統(tǒng)的三個(gè)子系統(tǒng),下面是對(duì)外統(tǒng)一的外觀類王悍,它持有三個(gè)子系統(tǒng)類的實(shí)例蔚袍,并對(duì)外提供統(tǒng)一的接口(start/end),方便外部調(diào)用:

    public static class SystemFacade {
        private static SubSystemA subSystemA = new SubSystemA();
        private static SubSystemB subSystemB = new SubSystemB();
        private static SubSystemC subSystemC = new SubSystemC();

        private void start() {
            subSystemA.start();
            subSystemB.start();
            subSystemC.start();
        }

        private void end() {
            subSystemA.end();
            subSystemB.end();
            subSystemC.end();
        }
    }

測(cè)試代碼:

public static void main(String[] args) {
        SystemFacade systemFacade = new SystemFacade();
        systemFacade.start();
        systemFacade.end();
        /**
         sub system A start
         sub system B start
         sub system C start
         sub system A end
         sub system B end
         sub system C end
         */
    }

到這里配名,外觀模式的代碼舉例就結(jié)束了,從輸出結(jié)果一看便知晋辆,各子系統(tǒng)均參與了工作渠脉,而且它們之間完全解耦,達(dá)到預(yù)期目的瓶佳。

5.代碼托管地址

外觀模式

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末芋膘,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌为朋,老刑警劉巖臂拓,帶你破解...
    沈念sama閱讀 219,110評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異习寸,居然都是意外死亡胶惰,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門霞溪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來孵滞,“玉大人,你說我怎么就攤上這事鸯匹》蝗模” “怎么了?”我有些...
    開封第一講書人閱讀 165,474評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵殴蓬,是天一觀的道長(zhǎng)匿级。 經(jīng)常有香客問我,道長(zhǎng)染厅,這世上最難降的妖魔是什么痘绎? 我笑而不...
    開封第一講書人閱讀 58,881評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮糟秘,結(jié)果婚禮上简逮,老公的妹妹穿的比我還像新娘。我一直安慰自己尿赚,他們只是感情好散庶,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,902評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著凌净,像睡著了一般悲龟。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上冰寻,一...
    開封第一講書人閱讀 51,698評(píng)論 1 305
  • 那天须教,我揣著相機(jī)與錄音,去河邊找鬼斩芭。 笑死轻腺,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的划乖。 我是一名探鬼主播贬养,決...
    沈念sama閱讀 40,418評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼琴庵!你這毒婦竟也來了误算?” 一聲冷哼從身側(cè)響起仰美,我...
    開封第一講書人閱讀 39,332評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎儿礼,沒想到半個(gè)月后咖杂,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,796評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蚊夫,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,968評(píng)論 3 337
  • 正文 我和宋清朗相戀三年诉字,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片这橙。...
    茶點(diǎn)故事閱讀 40,110評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡奏窑,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出屈扎,到底是詐尸還是另有隱情埃唯,我是刑警寧澤,帶...
    沈念sama閱讀 35,792評(píng)論 5 346
  • 正文 年R本政府宣布鹰晨,位于F島的核電站墨叛,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏模蜡。R本人自食惡果不足惜漠趁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,455評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望忍疾。 院中可真熱鬧闯传,春花似錦、人聲如沸卤妒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽则披。三九已至共缕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間士复,已是汗流浹背图谷。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評(píng)論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留阱洪,地道東北人便贵。 一個(gè)月前我還...
    沈念sama閱讀 48,348評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像冗荸,于是被迫代替她去往敵國和親承璃。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,047評(píng)論 2 355

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