免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
IOS設(shè)計(jì)模式淺析之外觀模式(Facade)

引言  

  在項(xiàng)目開發(fā)中,有時(shí)候會(huì)遇到這樣的一種情景:已有系統(tǒng)的各個(gè)子系統(tǒng)之間,隨著業(yè)務(wù)需求的發(fā)展,有了比較緊湊的耦合關(guān)系?,F(xiàn)在需要利用這些子系統(tǒng)的功能,為移動(dòng)端提供業(yè)務(wù)處理。我們?cè)撛趺磻?yīng)對(duì)這樣的業(yè)務(wù)需求呢?這就是本章外觀模式所要解決的問題。

  進(jìn)入正式講解前,我們先來分析一下兩種應(yīng)對(duì)如上業(yè)務(wù)需求的方式:

  方式一:移動(dòng)端直接調(diào)用各個(gè)子系統(tǒng)的功能,和各個(gè)子系統(tǒng)之間形成緊耦合的關(guān)系,如下圖所示:

  方式二:提供一個(gè)高層接口,該高層接口負(fù)責(zé)和子系統(tǒng)進(jìn)行交互,并向移動(dòng)端提供需要使用的接口,如下圖所示:

  從上面兩種方式的圖式結(jié)構(gòu)可以看到,對(duì)移動(dòng)端來說,方式二比方式一要好用很多,因?yàn)樵诜绞蕉?,移?dòng)端不需要知道各個(gè)子系統(tǒng)的邏輯,只需要和高層接口交互就可以了。實(shí)際上方式二,就是我們這里要說的外觀模式了。

定義

  “為子系統(tǒng)中的一組接口提供一個(gè)統(tǒng)一的接口。外觀模式定義了一個(gè)更高層次的接口,這個(gè)接口使得這一子系統(tǒng)更加容易使用。”

  最初的定義出現(xiàn)于《設(shè)計(jì)模式》(Addison-Wesley,1994)。

  這個(gè)定義,通過上面引言的圖示講解,應(yīng)該很好理解了,這里再分析一下定義中的兩個(gè)重要角色:

  外觀角色:就是引言圖示中的“高層接口”,客戶端可以調(diào)用這個(gè)角色的方法;另外,該角色知道相關(guān)的子系統(tǒng)的功能和責(zé)任。

  子系統(tǒng)角色:可以同時(shí)有一個(gè)或者多個(gè)子系統(tǒng)。每一個(gè)子系統(tǒng)都不是一個(gè)單獨(dú)的類,而是一個(gè)類的集合。每一個(gè)子系統(tǒng)都可以被客戶端直接調(diào)用,或者被外觀角色調(diào)用。

結(jié)構(gòu)圖

示例

  生活中,應(yīng)用外觀模式的例子很多,比如去飯館吃飯,我們不需要關(guān)注菜的選料、烹調(diào)等過程,只需要和服務(wù)員進(jìn)行交互:服務(wù)員給我們菜譜(相當(dāng)于就是外觀模式的高級(jí)接口),我們選菜(調(diào)用接口),就可以享受美食。

  這里,我們用另一個(gè)生活中的例子來進(jìn)行解說。不知道大家有沒有通過旅行社報(bào)團(tuán)出去旅游的經(jīng)歷?這是一個(gè)很好的外觀模式的應(yīng)用。我們選擇好景點(diǎn)之后,旅行社會(huì)幫我們聯(lián)系大巴、旅館、飯店、景點(diǎn)門票以及景點(diǎn)服務(wù)等事情,這些事情我們都不需要親自去安排,這就是外觀模式的便利之處:可以使得客戶端的接口更簡(jiǎn)單。

  下面列出應(yīng)用外觀模式實(shí)現(xiàn)旅行社報(bào)團(tuán)旅游的結(jié)構(gòu)圖:

  如果不應(yīng)用外觀模式,我們(上圖中的Client),就得自己去聯(lián)系交通工具、預(yù)定旅館、飯館、景點(diǎn)門票等,相信這樣的旅程,大家會(huì)感覺很累。有了外觀角色(上圖中的Facade),它會(huì)幫我們?nèi)ヌ幚磉@些事情。完整代碼大家可以下載查看,這里只貼出部分源碼。

  Facade.m(部分源碼):

  從源碼可以看到,外觀類調(diào)用了交通工具類、旅館類、飯館類、景點(diǎn)類。下面看看客戶端調(diào)用代碼:

  客戶端代碼只需要和外觀類進(jìn)行交互。

  下載源碼

小結(jié)

  通過上面的講解,我們來分析一下外觀模式的特點(diǎn):

  根據(jù)外觀模式的特點(diǎn),我們可以在以下情況中使用Facade模式:

  返回目錄

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
PHP設(shè)計(jì)模式—外觀模式
Java設(shè)計(jì)模式-外觀(門面)模式
GoF設(shè)計(jì)模式之十 Facade- -
深入理解JavaScript系列(30):設(shè)計(jì)模式之外觀模式
Java 設(shè)計(jì)模式——外觀模式
C#面向?qū)ο笤O(shè)計(jì)模式縱橫談:Facade 外觀模式
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服