外觀模式

外觀模式

定義

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

通用類圖

通用類圖.png

說明:Facade知曉子系統(tǒng)的所有功能和責(zé)任,外部不用理會(huì)子系統(tǒng)內(nèi)部是怎么實(shí)現(xiàn)泰涂,直接通過它便可以和內(nèi)部進(jìn)行通信。SubSystemClasses可以是一個(gè)或多個(gè)子系統(tǒng)辐怕,每個(gè)子系統(tǒng)是一個(gè)類的集合逼蒙。

通用代碼

// 定義子系統(tǒng)中的類
public class ClassA {
    public void methodA() {
        // 子系統(tǒng)中A類的業(yè)務(wù)邏輯
    }
}

public class ClassB {
    public void methodB(){
        // 子系統(tǒng)中B類的業(yè)務(wù)邏輯
    }
}

public class ClassC {
    public void methodC(){
        // 子系統(tǒng)中C類的業(yè)務(wù)邏輯
    }
}

// 外觀類
public class Facade {
    private ClassA a = new ClassA();
    private ClassB b = new ClassB();
    private ClassC c = new ClassC();

    public void methodA() {
        a.methodA();
    }

    public void methodB() {
        b.methodB();
    }

    public void methodC() {
        c.methodC();
    }

}

// 客戶端調(diào)用
public class Client {

    public static void main(String[] args) {
        Facade facade = new Facade();
        facade.methodA();
        facade.methodB();
        facade.methodC();
    }
}

樣例展示

一個(gè)保安系統(tǒng)由錄像機(jī)、電燈寄疏、紅外線監(jiān)控和警報(bào)器組成是牢。保安系統(tǒng)的操作人員需要經(jīng)常將這些儀器啟動(dòng)和關(guān)閉。保安類需要用到所有的錄像機(jī)(Camera)陕截、電燈(Light)驳棱、感應(yīng)器(Sensor)和警報(bào)器(Alarm)對(duì)象,保安覺得使用不方便农曲。

分析:子系統(tǒng)包括錄像機(jī)社搅、點(diǎn)燈、感應(yīng)器和警報(bào)器乳规,可以通過一個(gè)門面將這些儀器的操作封裝在一起形葬,保安類就不必自己直接去操控這些對(duì)象,而是通過這個(gè)門面來(lái)操作暮的。

樣例類圖

樣例類圖.png

樣例代碼

// 定義一個(gè)設(shè)備接口
public interface Equipment {
    public void turnOn(); // 打開設(shè)備
    public void turnOff(); // 關(guān)閉設(shè)備
}

// 具體設(shè)備
public class Camera implements Equipment {
    @Override
    public void turnOn() {
        System.out.println("打開錄像機(jī)");
    }

    @Override
    public void turnOff() {
        System.out.println("關(guān)閉錄像機(jī)");
    }
}

public class Light implements Equipment {
    @Override
    public void turnOn() {
        System.out.println("打開電燈");
    }

    @Override
    public void turnOff() {
        System.out.println("關(guān)閉電燈");
    }
}

public class Sensor implements Equipment {
    @Override
    public void turnOn() {
        System.out.println("打開傳感器");
    }

    @Override
    public void turnOff() {
        System.out.println("關(guān)閉傳感器");
    }
}

public class Alarm implements Equipment {
    @Override
    public void turnOn() {
        System.out.println("打開警報(bào)器");
    }

    @Override
    public void turnOff() {
        System.out.println("關(guān)閉警報(bào)器");
    }
}

// 定義一個(gè)門面(外觀)笙以,也就是控制臺(tái)
public class Console {
    private Equipment camera = new Camera();
    private Equipment light = new Light();
    private Equipment sensor = new Sensor();
    private Equipment alarm = new Alarm();

    public void turnOnAll() {
        camera.turnOn();
        light.turnOn();
        sensor.turnOn();
        alarm.turnOn();
    }

    public void turnOffAll() {
        camera.turnOff();
        light.turnOff();
        sensor.turnOff();
        alarm.turnOff();
    }

    public void turnOnCamera() {
        camera.turnOn();
    }

    public void turnOffCamera() {
        camera.turnOff();
    }

    // …… 后面的設(shè)備就不寫了
}

// 最后是保安類通過控制臺(tái)調(diào)用
public class Police {

    public static void main(String[] args) {
        Console console = new Console();
        console.turnOnAll();
        console.turnOffCamera();
    }
}

本文為《設(shè)計(jì)模式之禪》讀后筆記總結(jié)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市冻辩,隨后出現(xiàn)的幾起案子猖腕,更是在濱河造成了極大的恐慌拆祈,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件倘感,死亡現(xiàn)場(chǎng)離奇詭異放坏,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)老玛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門淤年,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人逻炊,你說我怎么就攤上這事±缦恚” “怎么了余素?”我有些...
    開封第一講書人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)炊昆。 經(jīng)常有香客問我桨吊,道長(zhǎng),這世上最難降的妖魔是什么凤巨? 我笑而不...
    開封第一講書人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任视乐,我火速辦了婚禮,結(jié)果婚禮上敢茁,老公的妹妹穿的比我還像新娘佑淀。我一直安慰自己,他們只是感情好彰檬,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開白布伸刃。 她就那樣靜靜地躺著,像睡著了一般逢倍。 火紅的嫁衣襯著肌膚如雪捧颅。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,443評(píng)論 1 302
  • 那天较雕,我揣著相機(jī)與錄音碉哑,去河邊找鬼。 笑死亮蒋,一個(gè)胖子當(dāng)著我的面吹牛扣典,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播慎玖,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼激捏,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了凄吏?” 一聲冷哼從身側(cè)響起远舅,我...
    開封第一講書人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤闰蛔,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后图柏,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體序六,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年蚤吹,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了例诀。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡裁着,死狀恐怖繁涂,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情二驰,我是刑警寧澤扔罪,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站桶雀,受9級(jí)特大地震影響矿酵,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜矗积,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一全肮、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧棘捣,春花似錦辜腺、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至禁熏,卻和暖如春壤巷,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背瞧毙。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工胧华, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人宙彪。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓矩动,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親释漆。 傳聞我的和親對(duì)象是個(gè)殘疾皇子悲没,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354

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

  • 在閻宏博士的《JAVA與模式》一書中開頭是這樣描述門面(Facade)模式的: 門面模式(外觀模式)是對(duì)象的結(jié)構(gòu)模...
    聶叼叼閱讀 232評(píng)論 0 1
  • 定義 門面模式是對(duì)象的結(jié)構(gòu)模式示姿,外部與一個(gè)子系統(tǒng)的通信必須通過一個(gè)統(tǒng)一的門面對(duì)象進(jìn)行甜橱。門面模式提供一個(gè)高層次的接口...
    步積閱讀 2,212評(píng)論 0 3
  • 目錄 本文的結(jié)構(gòu)如下: 什么是外觀模式 模式的結(jié)構(gòu) 代碼示例 優(yōu)點(diǎn)和缺點(diǎn) 適用環(huán)境 模式應(yīng)用 模式擴(kuò)展 補(bǔ)充 一、...
    w1992wishes閱讀 638評(píng)論 0 1
  • 本篇文章介紹一種設(shè)計(jì)模式——外觀模式栈戳。本篇文章內(nèi)容參考《JAVA與模式》之門面模式岂傲,外觀模式,深入淺出外觀模式(二...
    Ruheng閱讀 7,055評(píng)論 0 8
  • 上一次下廚子檀,應(yīng)該是半年前的事了吧镊掖,自從工作調(diào)動(dòng),越來(lái)越忙褂痰,已經(jīng)很少下廚了亩进。而我,原是廚房終結(jié)者缩歪,可偏偏就愛在廚房倒...
    念左閱讀 242評(píng)論 0 1