protocol
客製化 NotificationCenter 讓你使用起來更簡單
觀察者模式是一個常見、而且歷史悠久的程式設計模式,而在 Swift 裡,它主要是以通知與通知中心 (NotificationCenter) 的形式存在的。簡單來說,物件可以去向通知中心註冊,成為某一種通知事件的觀察者,然後當有人向通知中心送出通知的時候,通知中心就會去找它的註冊表裡面,所有有註冊這個通知類型的觀察者,並將通知傳送給它們。 [...]
好好利用 Swift Protocols 簡單增進程式碼的可測試性
對開發者來說,讓程式碼達到高度的可測試性可以說是一大挑戰。測試是非常有用的,可以確保你撰寫的程式碼運作起來符合需求,而且在添加新功能時也不會發生問題。同時,在一個團隊裡工作時,會有很多人修改程式碼,所以確保程式碼的完整度 (integrity) [...]
利用 Protocol Extension 減少重覆的 Code 大大增強 Code 的維護性
對任何程式開發來說,減少重覆的 code,把權責明確分開,讓 code 維護性變好,是非常重要的課題。同樣功能的 code,如果分散在程式的各個角落,不但改功能時很有可能會漏改或改錯,而且要找到某個功能確切的擺放位置也會非常困難;這些都會讓開發成本變得非常高,也會讓開發所需要的時間變得難以估計。 [...]
了解 Delegation Pattern 讓你更有效率地實作類別之間的溝通!
什麼是協定 (Protocol)? 根據 Apple 官方文件說明: 協定用於定義統一方法、屬性、和其他要求,以實作特定任務或功能。類別、結構、和列舉都可以遵循協定,並供具體實作來滿足協定定義的要求。任何滿足協定要求的型別,就可以說是遵循該協定。 遵循協定的型別除了必須實作的要求外,你還可以擴展協定來實作部分要求或附加功能,供符合的型別使用。 [...]
Table View 太複雜?利用 MVVM 和 Protocol 就可以為它重構瘦身!
UITableView 或者 UICollectionView 絕對是 iOS 工程師一定會使用到的 UI 元件,甚至可以說大多數 app 的 UI 都是圍繞著 tableView 來設計。隨著手機介面體驗的進步,tableView 也變得越來越複雜,尤其是像 news feed、photo wall 等,一個 cell 塞滿各種功能的設計,近幾年來已經成為手機開發的基本款。基本上一張 [...]
如何利用 Swift 協定導向撰寫網路層應用
本次教學將講述如何不使用第三方套件,只用 Pure Swift 來實作網路層。那我們就直接開始吧!閱讀完這篇教學內容後,我們的程式碼應該會是: 協定導向 易於使用 易於實作 型別安全 使用列舉 (Enum) 來配置 endPoints 以下是我們最終完成的範例: 只需要使用列舉來輸入 [...]
Protocol Oriented Programming:POP 真的比 OOP (物件導向編程) 更好嗎?
本篇文章將利用 Swift 4 深入討論 “Protocol Oriented Programming” (POP,協定導向程式設計)。本文是 POP 系列文章的第二篇、亦是最後一篇文章,如你尚未讀過這篇簡介文章,請先看過之後再繼續這篇教程。 今天,我們將討論為什麼 Swift 被認為是「協定導向 (Protocol-oriented)」的程式語言、比較 [...]
Protocol Oriented Programming:簡介 Swift 的協定導向程式設計
軟體開發者最大的敵人就是程式複雜度,所以當知到有新技術可以保證幫我處理這個混亂狀況,我便聽聽這是什麼新玩意。在 Swift,近年(至少自 2015 年以來)最「火熱」的方法論中,獲得最多關注的莫過於 “Protocol Oriented Programming” (POP,協定導向程式設計) [...]
iOS 開發者指南:透過 Swift 4 學習 Delegates 與 Delegation
本文主要講述 “delegates” 與 “delegation”。利用本文提供的完整專案源碼,我們將做一個簡單示例,在 Swift 4 中實現 delegation 設計模式。我將展示 delegation 的操作方式,讓你不再在複雜的專案中陷入困境。為了讓你成為頂尖開發者,我將會介紹最棒的設計工具 [...]
Swift開發指南:Protocols與Protocol Extensions的使用心法
歡迎來到Swift的protocols(協定)和protocols導向的編程教程,在本文中,我們將討論什麼是protocols,以及如何使用它們達到POP(protocol oriented programming:協定導向編程)開發。 我們將首先解釋什麼是protocol,關注protocol和class/structures之間的關鍵差異。接下來,我們將透過範例比較使用協定和類別繼承的差異,展示每種方法的優缺點。之後,我們將討論抽象化(abstraction)和多型(polymorphism),這些物件導向和協定導向編程中的重要概念。然後討論協定擴展(protocol [...]