<淺談 POP> Swift 當中的 Protocol

Journey on programming
2 min readNov 26, 2017

--

Hello, 今天這篇文章要來跟大家談談 Protocol,在 Swift 當中也有提供類似 C# / JAVA 當中 Interface 的修辭詞,來對方法來進行宣告,在開始之前,先來跟大家談談為什麼我們需要 Protocol?

一直以來程式的撰寫,都是圍繞的 OOP 的概念來進行,也就是有一個父類別,然後再由繼承的子類別來使用那些在父類別當中已經定義好的方法,我都會這樣解釋

假設今天爸爸有什麼東西,小孩因為繼承自爸爸,所以小孩也會跟著擁有爸爸的屬性及方法。

那如果今天小孩長大了,有了不同的身份,需要去做些別的事情的時候,這時候我們就不適合把這些方法或屬性,加在爸爸當中,因為爸爸不需要。那麼這些東西,我們應該要在哪裡做定義呢?

POP 的概念就很像對於一個身份的宣告,我們今天宣告了 「老師」這個職業,可能有上下班與教導學生的方法,而這些方法我們就可以定義在 Protocol 當中,讓具有這個身份的人來遵從這個協議,進而實作其內容。

試著問問自己,這樣做的好處是什麼?

在我們把方法切開來宣告之後,可以使得父類別的程式碼不在那麼冗雜,甚至不會出現一些只為了某個子類別,特別去新增的方法。再來,透過 Protocol 來做宣告,因為在 Swift 當中, Protocol 可以被當作一個型別,也就是假設今天需要一個老師,你不需要特地去創建一個老師的類別,而是只要遵從老師這個協議的物件,就符合你所需要的條件了。

如果有看過我之前的文章,可以發現其實 Delegate 就是透過這樣子的方式來做進行的,因為有 Protocol ,我們可以知道這個人一定會有這些方法可以來讓我做使用,所以我們就可以放心把事情交給他們去做了。

同場加映 — Extension Protocol

因為 swift 當中的 Protocol ,只做宣告的動作,並沒有包含定義,但是我們可以透過 extension Protocol 的方法,來為這些方法進行實作。這樣一來,即使某個類別繼承了 Protocol 之後,就算沒有真的實作方法,他還是可以去做呼叫。

以上說明如果有任何問題,歡迎留言讓我知道。

祝各位在 iOS 開發的旅途上,一路順心 :)

--

--

Journey on programming
Journey on programming

Written by Journey on programming

Software Developer at 91APP. If you like my articles, please clap and follow me on Medium. Never stay still, never plateau!

No responses yet