極客班 iOS 設計模式(一)

design_patterns
design_patterns

總體感覺設計模式課程偏理論,操作起來可能要反復實踐后,才會知道項目用哪個設計模式比較合適。

我目前還是學習了解的還是六大基本設計模式,希望以后開發過程中能夠思考設計模式的選擇。

@李建忠:設計模式是程序員從初階往中階邁進很重要的素養。關鍵在于要去思考設計的方案,為什么這么做?還有哪些設計方法?彼此的優劣?而不是功能跑通就了事。 在這樣日積月累的思考和反復實踐中,設計功力就會提高。

1. 設計模式簡介和 MVC

簡單介紹了設計模式的含義,和一些常用的 iOS 設計模式。

xdrt81y 的 關于iOS六大基本設計模式,文章簡單明了可以參考一下。

Introducing iOS Design Patterns in Swift – Part 1/2 結合項目介紹了 Swift 中的設計模式。

使用設計模式,蘋果文檔介紹。

Wikipedia:

In software engineering, a design pattern is a general reusable solution to a commonly occurring problem within a given context in software design.
It is a description or template for how to solve a problem that can be used in many different situations.
Patterns are formalized best practices that the programmer can use to solve common problems when designing an application or system.

2. Target-Action、selector 和 Nib

詳細介紹了 Nib 加載

3. Storyboard 和原型設計

Storyboard

我還是很喜歡 Storyboard,比代碼直觀高效,方便看到原型圖和交互關系。

拆分 Storyboard,避免多人同時修改。

推薦:WWDC15 215 What's New in Storyboards

參考:iOS 9: Staying Organized with Storyboard References

  • instantiateInitialViewController()
  • destination of a segue

Storyboard references are powerful. Not only do they make storyboards manageable and modular, they make it very easy to reuse storyboards and even hook into storyboards at arbitrary places.

Storyboard references are only available in iOS 9.

代碼見 GitHub

4. 兩步創建和模板方法

The best way to predict your future is to create it.

― Abraham Lincoln

兩步創建

對象兩步創建:alloc init

工廠方法:+ (instancetype)dateWithTimeIntervalSinceNow:(NSTimeInterval)seconds

內?。↖ntrospection)

模板方法

參考:lichwei1983 的文章 模板方法--行為型模式之四

模板方法應用于下列情況:

  • 一次性實現一個算法的不變的部分,并將可變的行為留給子類來實現。
  • 各子類中公共的行為應被提取出來并集中到一個公共父類中以避免代碼重復。這是 Opdyke 和 Johnson 所描述過的“重分解以一般化”的一個很好的例子。首先識別現有代碼中的不同之處,并且將不同之處分離為新的操作。最后,用一個調用這些新的操作的模板方法來替換這些不同的代碼。
  • 控制子類擴展。模板方法只在特定點調用“ h o o k”操作(參見效果一節),這樣就只允許在這些點進行擴展。

模板方法是一種代碼復用的基本技術。它們在類庫中尤為重要,它們提取了類庫中的公共行為。模板方法導致一種反向的控制結構,這種結構有時被稱為“好萊塢法則”,即“別找我們,我們找你”。這指的是一個父類調用一個子類的操作,而不是相反。

5. 單例模式

  • UIApplication
  • NSNotificationCenter
  • NSUserDefaults
  • NSFileManager
  • UIAccelerometer
  • NSURLSession

參考:剛剛在線的 iOS 設計模式系列:Singleton – 單例模式

單例設計模式確切的說就是一個類只有一個實例,有一個全局的接口來訪問這個實例。當第一次載入的時候,它通常使用延時加載的方法創建單一實例。

在一些情況下,一個類只有一個實例是有意義的。例如,這里沒有必要有多個登錄實例,除非你一次想寫入多個日志文件?;蛘撸粋€全局的配置類文件:它可以很容易的很安全的執行一個公共資源,這樣的一個配置文件,要比同時修改多個配置類文件好很多。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容