當(dāng)前位置:首頁(yè) > 公眾號(hào)精選 > 程序員小灰
[導(dǎo)讀]—————? 第二天? ————— ———————————— 首先,肯德基提供了眾多基礎(chǔ)菜品,比如雞翅、漢堡、薯?xiàng)l、沙拉、可樂(lè)等等: 這些琳瑯滿目的菜品雖好,但有些顧客犯了選擇困難癥,不知道該選什么好。 于是肯德基對(duì)這些菜品做了一定的組合,推出了各



—————  第二天  —————



————————————



首先,肯德基提供了眾多基礎(chǔ)菜品,比如雞翅、漢堡、薯?xiàng)l、沙拉、可樂(lè)等等:


這些琳瑯滿目的菜品雖好,但有些顧客犯了選擇困難癥,不知道該選什么好。


于是肯德基對(duì)這些菜品做了一定的組合,推出了各種各樣的套餐。比如A套餐,包括漢堡/薯?xiàng)l/可樂(lè);B套餐,包括漢堡/雞翅/沙拉/可樂(lè):



套餐不但搭配合理,而且價(jià)錢(qián)相對(duì)便宜,顧客可以更方便地做出選擇,餐廳的銷量也得到了提升。



餐廳為顧客提供餐飲服務(wù),和團(tuán)隊(duì)協(xié)作開(kāi)發(fā)項(xiàng)目又有哪些相似之處呢?


假設(shè)小灰在維護(hù)一個(gè)底層模塊的代碼,該模塊提供了5個(gè)基礎(chǔ)功能,這些功能對(duì)外封裝成了5個(gè)接口:



某一天,團(tuán)隊(duì)里的程序媛小紅跑過(guò)來(lái)和小灰對(duì)接:



過(guò)了幾天,小紅又跑過(guò)來(lái)和小灰對(duì)接:



小灰的想法如下:









這里所謂的“套餐”,就是底層細(xì)粒度接口的不同組合。在保留底層接口不變的前提下,中間層為調(diào)用方提供了便利。


這正是外觀模式(Facade Pattern)的設(shè)計(jì)思想:


To make a complex subsystem easier to use, a simple interface should be provided for a set of interfaces in the subsystem.


為了使復(fù)雜的子系統(tǒng)更容易被使用,應(yīng)當(dāng)為子系統(tǒng)的眾多接口提供一個(gè)簡(jiǎn)潔的高層接口。




上圖中,幾個(gè)SubSystem類對(duì)應(yīng)著我們剛才所說(shuō)的底層基礎(chǔ)功能,而Facade類對(duì)應(yīng)著中間層,為調(diào)用方提供“套餐”服務(wù)。



public class SubSystemA {
    public void methodA(){
        System.out.println("執(zhí)行方法A");
    }
}











public class Facade {

    public void comboMethodA(){
        SubSystemA subSystemA = new SubSystemA();
        SubSystemB subSystemB = new SubSystemB();
        SubSystemD subSystemD = new SubSystemD();
        subSystemA.methodA();
        subSystemB.methodB();
        subSystemD.methodD();
    }

    public void comboMethodB(){
        SubSystemE subSystemE = new SubSystemE();
        SubSystemD subSystemD = new SubSystemD();
        SubSystemB subSystemB = new SubSystemB();
        subSystemE.methodE();
        subSystemD.methodD();
        subSystemB.methodB();
    }
}




public class Client {
    public static void main(String[] args) {
        Facade facade = new Facade();
        //通過(guò)外觀模式,調(diào)用組合接口A
        facade.comboMethodA();
        //通過(guò)外觀模式,調(diào)用組合接口B
        facade.comboMethodB();
    }
}





—————END—————



喜歡本文的朋友,歡迎關(guān)注公眾號(hào) 程序員小灰,收看更多精彩內(nèi)容

      
點(diǎn)個(gè)[在看],是對(duì)小灰最大的支持!


免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問(wèn)題,請(qǐng)聯(lián)系我們,謝謝!

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
關(guān)閉
關(guān)閉