如何使用擴展
整個 App 往往在視覺設計上,會有類似於 CIS (企業識別系統) 的風格設計,往往會有幾種 App 專屬的標準色。
像 UIColor
裡面,就已經提供了最常用的數種顏色,如UIColor.whiteColor()
或是UIColor.blackColor()
等。
UIColor.whiteColor()
或UIColor.blackColor()
是簡單工廠模式(Simple Factory)的實踐,cocoa
有不少 API 都有提供這類方法來讓開發者達成快速建構的便利性。
至於顏色的建立,原本 iOS 所提供的方法為:
這其實跟台灣設計的習慣有不少的出入,並不是十分方便, 所以我們在專案裡面有再追加了兩個擴展,一個是 UIColor 的 HEX 功能,另一個是 Flat 風格的顏色。
但是這隻 App 如果有屬於自己常用的顏色,我們又不想去繼承原本的 UIColor,或是去修改更動已經整理好的功能,我們可以再額外增加一個專屬於這隻 App 的顏色功能,不需要去繼承 UIColor ,而是使用擴展再額外增加 UIColor 這之類別本身的功能。
新建一個 Swift 檔案:UIColor+OtherColor.swift
下面使用的方式:
這樣有利於和類別的原有方法進行區分,避免使用的時候產生衝突。現在很多還在維護中的第三庫都使用這種設計模式。
注意:類別是可以重寫父類別方法的,但是擴展不可以。擴展裡面的方法和屬性不能和原始類別裡的方法和屬性衝突。
思考一下這個設計模式的強大之處:
我們可以直接在擴展里使用
UIColor
的屬性與方法。我們給
UIColor
類添加了內容但是並沒有繼承它,事實上,使用繼承來擴展商業邏輯也可以實現一樣的功能。這個簡單的擴展讓我們可以更好地把
UIColor
的功能變得更符合在我們的應用程式中,而且不用修改原始碼。
完成到這一步的Demo:
查看原始碼
Last updated