<淺談 POP> Swift 當中的 Protocol
Hello, 今天這篇文章要來跟大家談談 Protocol,在 Swift 當中也有提供類似 C# / JAVA 當中 Interface 的修辭詞,來對方法來進行宣告,在開始之前,先來跟大家談談為什麼我們需要 Protocol?
一直以來程式的撰寫,都是圍繞的 OOP 的概念來進行,也就是有一個父類別,然後再由繼承的子類別來使用那些在父類別當中已經定義好的方法,我都會這樣解釋
假設今天爸爸有什麼東西,小孩因為繼承自爸爸,所以小孩也會跟著擁有爸爸的屬性及方法。
那如果今天小孩長大了,有了不同的身份,需要去做些別的事情的時候,這時候我們就不適合把這些方法或屬性,加在爸爸當中,因為爸爸不需要。那麼這些東西,我們應該要在哪裡做定義呢?
POP 的概念就很像對於一個身份的宣告,我們今天宣告了 「老師」這個職業,可能有上下班與教導學生的方法,而這些方法我們就可以定義在 Protocol 當中,讓具有這個身份的人來遵從這個協議,進而實作其內容。
試著問問自己,這樣做的好處是什麼?
在我們把方法切開來宣告之後,可以使得父類別的程式碼不在那麼冗雜,甚至不會出現一些只為了某個子類別,特別去新增的方法。再來,透過 Protocol 來做宣告,因為在 Swift 當中, Protocol 可以被當作一個型別,也就是假設今天需要一個老師,你不需要特地去創建一個老師的類別,而是只要遵從老師這個協議的物件,就符合你所需要的條件了。
如果有看過我之前的文章,可以發現其實 Delegate 就是透過這樣子的方式來做進行的,因為有 Protocol ,我們可以知道這個人一定會有這些方法可以來讓我做使用,所以我們就可以放心把事情交給他們去做了。
同場加映 — Extension Protocol
因為 swift 當中的 Protocol ,只做宣告的動作,並沒有包含定義,但是我們可以透過 extension Protocol 的方法,來為這些方法進行實作。這樣一來,即使某個類別繼承了 Protocol 之後,就算沒有真的實作方法,他還是可以去做呼叫。
以上說明如果有任何問題,歡迎留言讓我知道。
祝各位在 iOS 開發的旅途上,一路順心 :)