標籤:
設計模式是在特定情境下對特定問題的解決方案
1 單例模式
作用:解決“應用中只有一個執行個體”的問題,這個執行個體的作用是全域的,比如說是可以實現一些共用資源 方法的訪問和狀態的保持
實現原理:一般會封裝一個靜態屬性,並提供靜態執行個體的建立方法。
***********
James Rumbaugh對類的定義是:類是具有相似結構、行為和關係的一組對象的描述符。類是物件導向系統中最重要的構造塊。類圖顯示了一組類、介面、協作以及他們之間的關係。
建立類圖的步驟:(1)研究分析問題領域確定系統需求。(2)確定類,明確類的含義和職責、確定屬性和操作。(3)確定類之間的關係。***********
@synthesize singletonData = _singletonData;初始化static Singleton *sharedManager = nil;+ (Singleton*)sharedManager{ static dispatch_once_t once;GCD提供的結構體,將參數地址傳給函數 dispatch_once(&once, ^{作用是只執行一次代碼塊,還是線程同步的 sharedManager = [[self alloc] init]; }); return sharedManager;}UIApplication類:+shareApplication idleTimerDisabled屬性:設定和獲得“空閑時間禁止” -openURL:開啟一些內建的iOS應用*-stringByAddingPercentEscapesUsingEncoding:將字串轉換為URL編碼*2 委託模式 我們需要將看似功能很強但是很難維護的類,按照職責將他的屬性或方法指派到各自的類或分解成功能明確的類。 架構類:通用 可重複使用 與具體應用無關的特點,保持委派物件的指標,並在特定時間像委派物件發送訊息。 相關類:與具體應用有關,由於受到架構類的控制,應用相關類一般被設計成“協議”。 委派物件與通用類建立參考關聯性:通用類執行個體對象.delegate=委派物件 前三步:定義delegate屬性用於儲存委派物件的引用-建立委託協議.h 後三步:聲明實現委託-建立參考關聯性-實現委託方法 委託方法命名:should訊息應該返回一個布爾值,用於確定委託是否會響應訊息 will/did 這三種方法都會把發送訊息對象以參數的形式回傳回來3 觀察者模式 MVC模式中的重要組成部分,又叫發布/訂閱模式 1)通知機制 接收者:註冊通知-addObserver:selector:name:object:userInfo: 解除通知-removeObserver: 投送對象:-postNotificationName:object:userInfo:字典對象 -postNotification: 一般是程式進行到一個階段時候需要通知其他對象做something 2)KVO機制 在對象屬性變化時直接將通知發送給接收者 屬性變化的對象發送訊息要求觀察者開始觀察屬性變化:addObserver: forKeyPath:屬性 options:為屬性變化設定的選項 NSKeyValueObservingOptions類型 context:上下文內容 是c語言任何指標類型 觀察者需要重寫:-observeValueForKeyPath:ofObject:change:context:以響應屬性的變化4 MVC UIViewController是所有控制器的根類 UIView是所有視圖和控制項的根類 因為我們要通過控制器更新視圖和控制項,所以需要將這些視圖定義為輸出口類型的屬性 模型對象可以通過通知機制來通知數據的變化 視圖控制器可以儲存一個模型成員變數或屬性,並通過他們改變模型的狀態。
iOS開發指南 第8章 iOS常用設計模式 學習