iOS設計模式--適配器模式與觀察者模式

來源:互聯網
上載者:User

標籤:

何為適配器模式?

    適配器模式,可以這麼說,用於串連兩種不同種類的對象,使其毫無問題地協同工作。有時它也稱為封裝器。其思想相當簡單,適配器實現用戶端所要的某種介面的行為,同時,它又串連到另一個具有完全不同介面與行為的對象。一邊是用戶端懂得如何使用的目標介面,另一邊是用戶端一無所知的被適配者。適配器站在兩者之間,適配器的主要作用是把被適配者的行為傳遞給管道另一端的用戶端。

    基本上有兩種實現適配器的方式。第一種是通過整合來適配兩個介面,這稱為類適配器。類適配器是通過多重整合來實現的。第二種是對象適配器,與類適配器不同,對象適配器不繼承被適配者,而是組合了一個對它的引用。

    適配器模式:將一個類的介面轉換成用戶端希望的另一個介面。適配器模式使得原來由於介面不相容而不能一起工作的那些類可以一起工作。

類適配器與對象適配器的區別?

    類適配器:只針對單一的具體Adaptee類,把Adaptee適配到Target;易於重載Adaptee的行為,因為是通過直接的子類化進行的適配;只有一個Adapter對象,無需額外的指標間接訪問Adaptee。

    對象適配器:可以適配多個Adaptee及其子類;難以重載Adaptee的行為,需要藉助於子類的對象而不是Adaptee本身;需要額外的指標以間接訪問Adaptee並適配其行為。

    顯然,委託(Delegate)屬於對象適配器。

何時使用適配器模式?

    @:已有類的介面與需求不匹配。

    @:想要一個可複用的類,該類能夠同可能帶有不相容介面的其他類協作。

    @:需要適配一個類的幾個不同子類,可是讓每一個子類去子類化一個類適配器又不現實。那麼就可以使用對象適配器(也叫委託)來適配其父類介面。
在OC當中通過委託(Delegate)實現適配器。


何為觀察者模式?

    在觀察者模式中,一個對象任何狀態的變更都會通知另外的對改變感興趣的對象。這些對象之間不需要知道彼此的存在,這其實是一種松耦合的設計。當某個屬性發生變化的時候,我們通常使用這個模式去通知其它對象。

    此模式的通用實現中,觀察者註冊自己感興趣的其它對象的狀態的變更事件。當狀態發生變化的時候,所有觀察者都會收到通知。蘋果的推播通知就是一個此模式例子。如果你要遵循MVC模式的概念,你需要讓模型對象與視圖對象在不相互直接引用的情況下通訊。這正是觀察者模式的用武之地。

    Cocoa通過使用通知(NSNotification)與KVO來實現觀察者模式。

通知與KVO

    通知:通知是一種基於訂閱-發布模式的模型,它讓發行者可以給訂閱者發送訊息,並且發行者不需要對訂閱有任何的瞭解。通知在蘋果官方被大量的使用,當鍵盤彈出或隱藏的時候,系統會獨立的發送UIKeyboardWillShowNotification/UIKeyboardWillHideNotification通知。當你的應用進入後台啟動並執行時候,會發送UIApplicationDidEnterBackgroundNotification通知。當你開啟UIApplication.h檔案,在檔案末尾你將會看到大量由系統發出的通知。

    KVO機制讓對象可以感知屬性的變化,這種機制在模型-視圖-控制器模式的情境中尤其重要,因為它讓視圖對象可以經由控制器層觀察模型對象的變更。

    通知與KVO的主要區別:通知,一個中心對象為所有觀察者提供變更通知,主要從廣義上關注程式事件。KVO,被觀察的對象直接向觀察者發送通知,綁定於特定對象屬性的值。

何時使用觀察者模式?

    @:有兩種抽象類別相互依賴。將它們封裝在各自的對象中,就可以對它們單獨進行改變和複用。

    @:對一個對象的改變需要同時改變其他對象,而不知道具體還有多少對象有待改變。

    @:一個對象必須通知其他對象,而它又不需要知道其他對象是什麼。

參考文章:

http://blog.jobbole.com/55505/

demo地址:

https://github.com/guoshimeihua/MemoryAndCommandDemo


iOS設計模式--適配器模式與觀察者模式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.