設計模式 MVC 委託 協議

設計模式:解決編程問題的設計模板

  「封裝發生變化的系統結構方面」 和「面向接口編程,而非面向實現編程」。例如,封裝原則告訴咱們,若是隔離並封裝系統中發生變化的部分,它們能夠獨立於系統其餘部分進行變化,特別是若是爲它們定義了不依賴實現特性的接口。稍後能夠修改或擴展這些可變部分,而不影響系統的其餘部分。這樣一來,清除了各部分之間的互相依賴,減小了各部分的耦合性,系統就會變得更加靈活、更容易修改。編程

最重要的設計模式:模型-視圖-控制器

  

  模型對象:模型對象封裝了應用程序的數據,並定義操控和處理該數據的邏輯和運算。例如,模型對象多是表示遊戲中的角色或地址簿中的聯繫人。用戶在視圖層中所進行的建立或修改數據的操做,經過控制器對象傳達出去,最終會建立或更新模型對象。模型對象更改時(例如經過網絡鏈接接收到新數據),它通知控制器對象,控制器對象更新相應的視圖對象。設計模式

  視圖對象:視圖對象是應用程序中用戶能夠看見的對象。視圖對象知道如何將本身繪製出來,並可能對用戶的操做做出響應。視圖對象的主要目的,就是顯示來自應用程序模型對象的數據,並使該數據可被編輯。網絡

  控制器對象:在應用程序的一個或多個視圖對象和一個或多個模型對象之間,控制器對象充當媒介。控制器對象所以是同步管道程序,經過它,視圖對象瞭解模型對象的更改,反之亦然。控制器對象還能夠爲應用程序執行設置和協調任務,並管理其餘對象的生命週期。框架

 

委託:表明另外一個對象

  在委託中,一個稱爲委託的對象應另外一個對象的請求,做爲該對象的表明。做出委託的對象,一般是框架模型。在執行的某些時候,它會向其委託發送消息,告訴委託即將發生某些事件,並要求給它迴應。委託(一般是自定類的實例)實施供該消息調用的方法,並返回相應的值。一般該值是一個 Boolean 值,告訴做出委託的對象是否繼續操做。委託所以是一種將應用程序特定行爲加入框架類工做的手段,而無需給該類建立子類。它是一種常見的、強大的設計,來擴展和影響框架的行爲。可是委託並不侷限於框架類。能夠在應用程序的兩個自定對象之間實施委託。Cocoa Touch 應用程序常見的設計,是將委託做爲一種手段,容許子視圖控制器將某些值(一般爲用戶輸入的值)傳達到父視圖控制器。spa

  有兩個可編程的組件用於委託。委託類必須定義屬性(經過名稱爲 delegate 的約定),以保存一個指向委託的參考。它還必須聲明委託類必須採用的協議。線程

 

協議:使不相關的對象之間能經過繼承進行通訊

 

通知中心:通知對事件感興趣的觀察者

  任何對象均可以觀察通知,但要作到這一點,該對象必須註冊,以接收通知。在註冊時,它必須指定選擇器,以肯定由通知傳送所調用的方法;方法簽名必須只有一個參數:通知對象。註冊後,觀察者也能夠指定發佈對象。設計

 

基於設計模式的其餘框架設計

Cocoa Touch 和 Cocoa 框架也包含基於設計模式的其餘設計,有如下模式:3d

  • 視圖層次。應用程序所顯示的視圖,會排列成層次結構(直觀上基於包含)。此模式容許應用程序將單個視圖和合成視圖同等對待。層次的根部爲一個窗口對象;根部如下的每一個視圖,都有一個父視圖,以及零個或多個子視圖。父視圖包含子視圖。視圖層次是繪圖和事件處理的結構性組件。code

  • 響應器鏈。響應器鏈是一系列的對象(主要是視圖,但也有窗口、視圖控制器和應用程序對象自己),事件或操做消息能夠沿着響應器鏈傳遞,直到鏈中的一個對象處理該事件。所以,它是一個合做性事件處理機制。響應器鏈與視圖層次密切相關。對象

  • 視圖控制器。雖然 UIKit 和 AppKit 框架都有視圖控制器類,它們在 iOS 中尤爲重要。視圖控制器是一種特殊的控制器對象,用於顯示和管理一組視圖。視圖控制器對象提供基礎結構,來管理內容相關的視圖並協調視圖的顯示與隱藏。視圖控制器管理應用程序視圖的子層次結構。

  • 前臺。在前臺模式中,應用程序所執行的工做,從一個執行環境重定向(或彈回)到另外一個環境。(執行環境是一個與主線程或輔助線程相關聯的調度隊列或操做隊列。)您將前臺模式主要應用於這樣的情形:在次隊列執行的工做,產生了必須在主隊列執行的任務,例如更新用戶界面的操做。

  • 類別。類別提供了一種方式,經過將方法添加到一個類,以使該類獲得擴展。與委託同樣,它可讓您自定行爲,而不子類化。類別是 Objective-C 的一個功能,在「編寫 Objective-C 代碼」中有說明。

相關文章
相關標籤/搜索