課程名稱:iOS與設計模式
一、 簡介
根據講師十多年奮戰在一線的實戰經驗,詳細剖析對設計模式的了解與實踐,尤其是結合最近幾年來在iOS領域的思考和研究。本課程系列講介紹GOF經典設計模式以及面向對象設計的5大原則,分析這些設計模式在iOS中的實際使用場景,并使用大量案例,在短短的幾堂課中,幫助學員迅速掌握學習設計模式的方法。
本課程讓學員掌握二十多個設計模式在Android中的使用場景,了解模式背後深層次的思想,更重要的是,學會如何學習一門新技術。
本課程對于開發以下App産品特别有幫助:
1、千萬級使用者的App産品。
2、業務功能繁多。
學習本課程應具備下列基礎知識:
1、1-2年iOS開發經驗。
2、對設計模式有一些了解或接觸。
二、 教育訓練大綱(2天)
第一天 上午
第1講 SOLID五大原則及UML圖繪制
1.
單一性原則
l 一個類隻幹一件事情
l
從ViewController中剝離UITableView
2.
開閉原則
l 對擴充開放,對修改封閉
l 從switch-case談起
3.
裡氏替換原則
l 父類,子類?
l 對多态的重新認識
l 白馬與馬
4.
依賴倒置原則
l 依賴于抽象,而不是依賴于具體
l 模版方法
l 從WebService到JSON
5.
接口隔離原則
l 類之間的依賴,建立于最小粒度的接口
l 看人下菜碟
l 寬窄接口
6.
迪米特法則
l 不要和陌生人說話
7.
UML圖繪制
l 接口、類
l 類的關系(關聯、依賴、聚合、組合)
8.
總結
l 組合,還是繼承?
l 可插拔技術
l 面向接口程式設計
第2講
建立型設計模式(一)
簡單工廠
l 定義及UML圖、通用代碼實作
l iOS中的使用場景:ViewController的viewDidLoad方法
l iOS中的一個例子:檔案存儲
工廠模式
l 簡單工廠與工廠的微小差別
l iOS中的使用場景:兩步對象建立法
l 反射與工廠模式的配合
第一天 下午
第1講
建立型設計模式(二)
單例模式
l 多例
l iOS的内部支援:UIApplication和UIAccelerometer
l iOS中的使用場景:單例宏
原型模式
l 淺拷貝和深拷貝
l NSCoping
l NSCoding
l App中的使用場景:再來一單
生成器模式
l 編寫一個例子:繪制笑臉
l 變體:Director的蛻化
構造型設計模式(一)
委托模式
l 神奇的delegate
l 委托模式的使用場合
擴充卡模式
l 類擴充卡和對象擴充卡
l 一個例子:變壓器
l iOS中的内部支援:Delegate以及UITableView
l 使用Block實作擴充卡模式
橋接模式
l 兩個次元的簡單工廠
l 加法,還是乘法?
l 編寫一個例子:蠟筆與水彩筆
代理模式
l 靜态代理和動态代理
l 遠端代理
l 虛拟代理
l 保護代理
l iOS中的内部支援:NSProxy
第二天 上午
構造型設計模式(二)
組合模式
l 溫習一下遞歸算法
l 實作的兩種方式
l 一個現實中的例子:山上有座廟
l iOS中的内部支援:UIView的層級結構
享元模式
l 不變模式
l 享元是多例與不變模式的組合
l 自己編寫一個例子:圍棋
裝飾器模式
l 編寫一個例子:炒菜
l 給工廠增加新方法
l 使用Category來實作裝飾器模式
外觀模式
l 與單一職責設計原則的沖突
行為型設計模式(一)
職責鍊模式
l 寫一個例子:遊戲中的傷害計算
l iOS中的内部支援:UIView中的事件處理和動作消息
模版方法模式
l 基于政策模式的排序算法
l iOS中的内部支援:UIView的鈎子方法drawRect
指令模式
l 例子1:玉皇大帝派太上老君封孫悟空為齊天大聖
l 復原(undo)
l 在iOS中的應用:NSInvocation與NSUndoManager
備忘錄模式
l 復原機制的另一種實作
l 例子:單機遊戲的儲存和加載
l 寬窄接口:IMemento
第二天 下午
行為型設計模式(二)
疊代器模式
l 在iOS中的内部支援:NSEnumerator及延伸
政策模式
l App中的應用:基于UITextView的驗證器
觀察者模式
l 例子:RSS
l 在iOS中的内部支援1:KVO
l 在iOS中的内部支援2:NSNotificationCenter
中介者模式
l 編寫一個例子:房産中介
l 在iOS中的應用:UIViewController中控件間通信
狀态模式
l 寫一個例子:空調遙控器
l 在App中的應用:使用者登入
總結回顧
回顧23個設計模式
設計模式沉思