外觀模式

定義一個高層接口位迂,為子系統(tǒng)中的一組接口提供一個一致的外觀访雪,從而簡化了該子系統(tǒng)的使用。

package com.strife.pattern.facade;

/**
 * 外觀模式
 *
 * @author mengzhenghao
 * @date 2022/5/30
 */
public class Facade {
    public static void main(String[] args) {
        HomeFacade homeFacade = new HomeFacade();
        homeFacade.watchMovie();
        System.out.println("----------------------------------");
        homeFacade.endMovie();
    }
}

class DVDPlayer {

    private static DVDPlayer instance = new DVDPlayer();

    public static DVDPlayer getInstance() {
        return instance;
    }

    public void on() {
        System.out.println("DVDPlayer on");
    }

    public void off() {
        System.out.println("DVDPlayer off");
    }

    public void play() {
        System.out.println("DVDPlayer is playing");
    }

    public void pause() {
        System.out.println("DVDPlayer is paused");
    }
}

class Popcorn {

    private static Popcorn instance = new Popcorn();

    public static Popcorn getInstance() {
        return instance;
    }

    public void on() {
        System.out.println("Popcorn on");
    }

    public void off() {
        System.out.println("Popcorn off");
    }

    public void pop() {
        System.out.println("Popcorn is popping");
    }

}

class Projector {

    private static Projector instance = new Projector();

    public static Projector getInstance() {
        return instance;
    }

    public void on() {
        System.out.println("Projector on");
    }

    public void off() {
        System.out.println("Projector off");
    }

    public void tvMode() {
        System.out.println("Projector is in tv mode");
    }

    public void wideScreenMode() {
        System.out.println("Projector is in wide screen mode");
    }
}

class Screen {

    private static Screen instance = new Screen();

    public static Screen getInstance() {
        return instance;
    }

    public void up() {
        System.out.println("Screen is going up");
    }

    public void down() {
        System.out.println("Screen is going down");
    }
}

class HomeFacade {

    private DVDPlayer dvdPlayer;
    private Popcorn popcorn;
    private Projector projector;
    private Screen screen;

    public HomeFacade() {
        this.dvdPlayer = DVDPlayer.getInstance();
        this.popcorn = Popcorn.getInstance();
        this.projector = Projector.getInstance();
        this.screen = Screen.getInstance();
    }

    public void watchMovie() {
        popcorn.on();
        popcorn.pop();
        dvdPlayer.on();
        dvdPlayer.play();
        screen.down();
        projector.on();
        projector.tvMode();
    }

    public void endMovie() {
        popcorn.off();
        dvdPlayer.off();
        screen.up();
        projector.off();
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末掂林,一起剝皮案震驚了整個濱河市臣缀,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌党饮,老刑警劉巖肝陪,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異刑顺,居然都是意外死亡氯窍,警方通過查閱死者的電腦和手機(jī)饲常,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來狼讨,“玉大人贝淤,你說我怎么就攤上這事≌” “怎么了播聪?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長布隔。 經(jīng)常有香客問我离陶,道長,這世上最難降的妖魔是什么衅檀? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任招刨,我火速辦了婚禮,結(jié)果婚禮上哀军,老公的妹妹穿的比我還像新娘沉眶。我一直安慰自己,他們只是感情好杉适,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布谎倔。 她就那樣靜靜地躺著,像睡著了一般猿推。 火紅的嫁衣襯著肌膚如雪片习。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天彤守,我揣著相機(jī)與錄音毯侦,去河邊找鬼。 笑死具垫,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的试幽。 我是一名探鬼主播筝蚕,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼铺坞!你這毒婦竟也來了起宽?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤济榨,失蹤者是張志新(化名)和其女友劉穎坯沪,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體擒滑,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡腐晾,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年叉弦,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片藻糖。...
    茶點(diǎn)故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡淹冰,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出巨柒,到底是詐尸還是另有隱情樱拴,我是刑警寧澤,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布洋满,位于F島的核電站晶乔,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏牺勾。R本人自食惡果不足惜瘪弓,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望禽最。 院中可真熱鬧腺怯,春花似錦、人聲如沸川无。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽懦趋。三九已至晾虑,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間仅叫,已是汗流浹背帜篇。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留诫咱,地道東北人笙隙。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像坎缭,于是被迫代替她去往敵國和親竟痰。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評論 2 354

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

  • 一掏呼、模式定義 外觀模式(Facade Pattern):外部與一個子系統(tǒng)的通信必須通過一個統(tǒng)一的外觀對象進(jìn)行坏快,為子...
    端木軒閱讀 3,645評論 2 2
  • 一、模式定義 外觀模式(Facade Pattern):外部與一個子系統(tǒng)的通信必須通過一個統(tǒng)一的外觀對象進(jìn)行憎夷,為子...
    QuantRuu閱讀 737評論 0 50
  • 模式定義 外觀模式(Facade Pattern):外部與一個子系統(tǒng)的通信必須通過一個統(tǒng)一的外觀對象進(jìn)行莽鸿,為子系統(tǒng)...
    lijun_m閱讀 394評論 0 0
  • 文摘一:有些地方外觀模式也被叫做門面模式,英文即Facade Pattern拾给,提前說明一下祥得。 試想這種情況兔沃,用戶添...
    _淺墨_閱讀 482評論 0 1
  • 外觀模式(Facade),為子系統(tǒng)中的一組接口提供一個一致的界面啃沪,F(xiàn)acade模式定義了一個高層接口粘拾,這個接口使得...
    夜航星osmo閱讀 196評論 0 0