iOS 設(shè)計(jì)模式~門(mén)面模式 demo

//聯(lián)系人:石虎QQ:1224614774昵稱(chēng):嗡嘛呢叭咪哄

一盟萨、概念

門(mén)面模式也稱(chēng)為外觀模式弯屈。

門(mén)面模式提供了一個(gè)統(tǒng)一的接口睡毒,用來(lái)訪問(wèn)子系統(tǒng)中的一群接口谱秽。外觀定義了一個(gè)高層接口生巡,讓子系統(tǒng)更容易使用耙蔑。——《Head First設(shè)計(jì)模式》

在各種服務(wù)盡量解耦的情況下孤荣,門(mén)面模式提供類(lèi)似聚合層的作用纵潦。例如用戶下單,需要調(diào)用訂單服務(wù)下訂單垃环,還要調(diào)用支付服務(wù)進(jìn)行支付邀层,此時(shí)可以用門(mén)面接口新建一個(gè)接口,提供下單和支付功能遂庄×仍海客戶端只需調(diào)用一個(gè)方法。

二涛目、例子

// 點(diǎn)燈類(lèi)

public class Light {

//接通開(kāi)啟

publicvoidturnOn() {

System.out.println("開(kāi)燈!");

}

//關(guān)掉

publicvoidturnOff() {

System.out.println("關(guān)燈!");

}

}

// 空調(diào)類(lèi)

public class AirConditioner {

publicvoidturnOn() {

System.out.println("開(kāi)空調(diào)!");

}

publicvoidturnOff() {

System.out.println("關(guān)空調(diào)!");

}

}

// 熱水器類(lèi)

public class WaterHeater {

publicvoidturnOn() {

System.out.println("開(kāi)熱水器!");

}

publicvoidturnOff() {

System.out.println("關(guān)熱水器!");

}

}

/**

需求

這是設(shè)計(jì)了一堆電器類(lèi)秸谢,文章為方便凛澎,只給出電燈類(lèi),空調(diào)類(lèi)估蹄,熱水器類(lèi)塑煎。

每個(gè)類(lèi)都有打開(kāi)和關(guān)閉的方法。

每天回家臭蚁,你會(huì)打開(kāi)所有電器最铁,每天出門(mén),你會(huì)關(guān)閉所有電器垮兑。

*/

//委托人

public class Client {

publicstaticvoidmain(String[] args) {

Light light = new Light();//光

AirConditioner airConditioner = new AirConditioner();//空調(diào)裝置

WaterHeater waterHeater = new WaterHeater();//熱水器

//接通開(kāi)啟

System.out.println("回家了!");

light.turnOn();

airConditioner.turnOn();

waterHeater.turnOn();

//關(guān)掉

System.out.println("出門(mén)了!");

light.turnOff();

airConditioner.turnOff();

waterHeater.turnOff();

}

}

/**

需求優(yōu)化

加一個(gè)控制中心即可冷尉,定義了ControlCenterFacade類(lèi)

*/

//控制中心外觀

public class ControlCenterFacade {

//私人的

private Light light;//光

private AirConditioner airConditioner;//空調(diào)裝置

private WaterHeater waterHeater;//熱水器

public ControlCenterFacade() {

this.light = new Light();

this.airConditioner = new AirConditioner();

this.waterHeater = new WaterHeater();

}

//接通開(kāi)啟

publicvoidturnOn() {

light.turnOn();

airConditioner.turnOn();

waterHeater.turnOn();

}

//關(guān)掉

publicvoidturnOff() {

light.turnOff();

airConditioner.turnOff();

waterHeater.turnOff();

}

}

/**

該類(lèi)在turnOn方法中調(diào)用了所有電器的打開(kāi)方法,在turnOff中調(diào)用了所有電器的關(guān)閉方法系枪。

這里的控制中心就是一個(gè)門(mén)面雀哨,你不用關(guān)系你有多少電器,也不用關(guān)心每個(gè)電器如何開(kāi)啟關(guān)閉私爷。

你要做的雾棺,只是按下控制中心上的打開(kāi)/關(guān)閉按鈕。

*/

public class ClientV2 {

publicstaticvoidmain(String[] args) {

ControlCenterFacade controlCenterFacade = new ControlCenterFacade();

//接通開(kāi)啟

System.out.println("回家了!");

controlCenterFacade.turnOn();

//關(guān)掉

System.out.println("出門(mén)了!");

controlCenterFacade.turnOff();

}

}

//這就是門(mén)面模式

三衬浑、總結(jié)

門(mén)面模式比較簡(jiǎn)單捌浩,甚至稱(chēng)不上是一個(gè)設(shè)計(jì)模式。

是代碼解耦的反面嚎卫,提供了聚合層嘉栓,如果豪宅中增加了新的電器宏榕,就需要修改控制中心類(lèi)了拓诸。

方便上層的調(diào)用,使得上層代碼邏輯更清晰麻昼。

謝謝!!!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末奠支,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子抚芦,更是在濱河造成了極大的恐慌倍谜,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,194評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件叉抡,死亡現(xiàn)場(chǎng)離奇詭異尔崔,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)褥民,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén)季春,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人消返,你說(shuō)我怎么就攤上這事载弄≡拍矗” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,780評(píng)論 0 346
  • 文/不壞的土叔 我叫張陵宇攻,是天一觀的道長(zhǎng)惫叛。 經(jīng)常有香客問(wèn)我,道長(zhǎng)逞刷,這世上最難降的妖魔是什么嘉涌? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,388評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮亲桥,結(jié)果婚禮上洛心,老公的妹妹穿的比我還像新娘。我一直安慰自己题篷,他們只是感情好词身,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著番枚,像睡著了一般法严。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上葫笼,一...
    開(kāi)封第一講書(shū)人閱讀 49,764評(píng)論 1 290
  • 那天深啤,我揣著相機(jī)與錄音,去河邊找鬼路星。 笑死溯街,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的洋丐。 我是一名探鬼主播呈昔,決...
    沈念sama閱讀 38,907評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼友绝!你這毒婦竟也來(lái)了堤尾?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,679評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤迁客,失蹤者是張志新(化名)和其女友劉穎郭宝,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體掷漱,經(jīng)...
    沈念sama閱讀 44,122評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡粘室,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了卜范。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片衔统。...
    茶點(diǎn)故事閱讀 38,605評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出缰冤,到底是詐尸還是另有隱情犬缨,我是刑警寧澤,帶...
    沈念sama閱讀 34,270評(píng)論 4 329
  • 正文 年R本政府宣布棉浸,位于F島的核電站怀薛,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏迷郑。R本人自食惡果不足惜枝恋,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望嗡害。 院中可真熱鬧焚碌,春花似錦、人聲如沸霸妹。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,734評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)叹螟。三九已至鹃骂,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間罢绽,已是汗流浹背畏线。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,961評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留良价,地道東北人寝殴。 一個(gè)月前我還...
    沈念sama閱讀 46,297評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像明垢,于是被迫代替她去往敵國(guó)和親蚣常。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評(píng)論 2 348

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

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法袖外,類(lèi)相關(guān)的語(yǔ)法史隆,內(nèi)部類(lèi)的語(yǔ)法魂务,繼承相關(guān)的語(yǔ)法曼验,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚(yú)_t_閱讀 31,598評(píng)論 18 399
  • 多態(tài) 任何域的訪問(wèn)操作都將有編譯器解析粘姜,如果某個(gè)方法是靜態(tài)的鬓照,它的行為就不具有多態(tài)性 java默認(rèn)對(duì)象的銷(xiāo)毀順序與...
    yueyue_projects閱讀 936評(píng)論 0 1
  • Java經(jīng)典問(wèn)題算法大全 /*【程序1】 題目:古典問(wèn)題:有一對(duì)兔子,從出生后第3個(gè)月起每個(gè)月都生一對(duì)兔子孤紧,小兔子...
    趙宇_阿特奇閱讀 1,850評(píng)論 0 2
  • 設(shè)計(jì)模式六大原則 設(shè)計(jì)模式六大原則(1):?jiǎn)我宦氊?zé)原則 定義:不要存在多于一個(gè)導(dǎo)致類(lèi)變更的原因豺裆。通俗的說(shuō),即一個(gè)類(lèi)...
    viva158閱讀 764評(píng)論 0 1
  • 近兩年以來(lái)躺酒,都不敢面對(duì)自己的年紀(jì),一個(gè)準(zhǔn)三十歲的菇?jīng)雒锔瑁煸谝慌?5后的圈子羹应,我的內(nèi)心是自卑的。我內(nèi)心非常地清楚...
    林山妖霧閱讀 379評(píng)論 0 0