iOS設計模式-面板模式(也稱門店模式)與裝飾模式

來源:互聯網
上載者:User

標籤:

何為面板模式?

    面板模式為子系統中一組不同的介面提供統一的介面。外觀定義了上層介面,通過降低複雜度和隱藏子系統間的通訊以及依存關係,讓子系統更加便於使用。

    比方說子系統中有一組不同的類,其中一些彼此依賴。這讓用戶端難以使用子系統中的類,因為用戶端需要知道每一個類。外觀起到整個子系統的入口。有些用戶端只需要子系統的某些基本行為,而對子系統的類不做太多定製,外觀為這樣的用戶端提供簡化的介面。只有需要從某些子系統的類定製更多行為的用戶端,才會關注外觀背後的細節。

    面板模式:為系統中的一組介面提供一個統一的介面。外觀定義一個高層介面,讓子系統更便於使用。

何時使用面板模式?

    @:子系統正逐漸層得複雜。應用模式的過程中演化出許多類,可以使用外觀為這些子系統提供一個較簡單的介面。

    @:可以使用外觀對子系統進行分層。每個子系統層級有一個外觀作為進入點。讓它們通過其外觀進行通訊,可以簡化它們的依賴關係。



何為裝飾模式?

    裝飾模式,在不修改原來代碼的情況下動態給對象增加新的行為與職責,就擴充功能來說,裝飾模式比產生子類更為靈活。

    在Objective-C中,系統提供了兩種實現方式,Category(類別)和Delegate(委託)。

    Category是一種不需要子類化就可以讓你動態地給已經存在的類增加方法的強有力的機制。新增的方法是在編譯器增加的,這些方法執行的時候和被擴充的類的其他方法是一樣的。它可能與裝飾器模式稍微不同,因為Category不會儲存被擴充類的引用。注意:你除了擴充自己的類以外,還可以給Cooca中的類增加方法。

    Delegate作為另一種裝飾模式,它是一種和其他對象互動的機制。比如你使用UITableView的時候,就必須要實現table:numberOfRowsInSection:方法。

何時使用裝飾模式?

    @:想要在不影響其他對象的情況下,以動態、透明的方式給單個對象添加職責。

    @:想要擴充一個類的行為,卻做不到。類定義可能被隱藏,無法進行子類化;或者,對類的每個行為進行擴充,為支援每種功能組合,將會產生大量的子類。

    @:對類的職責的擴充是可選的。

面板模式與策略模式的區別?

    從外部變更,每個節點不知道變更,這是面板模式。從內部變更,每個節點知道一組預定義的變更方式,這是策略模式。


參考文章:

http://blog.jobbole.com/48166/

demo地址:

https://[email protected]/guoshimeihua/MemoryAndCommandDemo.git

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.