乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      IOS設(shè)計模式淺析之外觀模式(Facade)

       昵稱10504424 2014-01-14

      引言  

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

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

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

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

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

      定義

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

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

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

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

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

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

      示例

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

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

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

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

        Facade.m(部分源碼):

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

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

        下載源碼

      小結(jié)

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

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

        返回目錄

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多