面向協(xié)議編程
- 是Swift的一種編程范式痪署,Apple于2015年WWDC提出纸泡。
- 在Swift的標(biāo)準(zhǔn)庫中绩郎,能見到大量POP的影子
同時(shí)叉寂,Swift也是一門面向?qū)ο蟮木幊陶Z言
在Swift開發(fā)中萍启,OOP的POP是相輔相成的,任何一方并不能取代另一方
POP能彌補(bǔ)OOP一些設(shè)計(jì)上的不足
回顧OOP
OOP的三大特性:封裝、繼承勘纯、多臺
繼承的經(jīng)典使用場合
當(dāng)多個(gè)類(比如A局服、B、C類)具有很多共性時(shí)驳遵,可以將這些共性抽取到一個(gè)父類中(比如D類)淫奔,最后A、B堤结、C類繼承D類
OOP的不足
但有些問題唆迁,使用OOP并不能很好解決,比如:
如何將BVC竞穷、DVC的公共方法run抽取出來唐责?
基于OOP想到的一些方案?
1.將run方法放到另一個(gè)對象A中来庭,然后BVC妒蔚、DVC擁有對象A屬性
但是多了一些額外的依懶關(guān)系
2.將run方法增加到UIViewController分類中
UIViewController會(huì)越來越臃腫,而且會(huì)影響它的其他所有子類
3.將run方法抽取到新的父類月弛,采取多繼承肴盏?
也不好
POP的解決方案
這樣關(guān)系就比較有針對性
POP的注意點(diǎn)
優(yōu)先考慮創(chuàng)建協(xié)議,而不是父類(基類)
優(yōu)先考慮值類型(struct帽衙、enum)菜皂,而不是引用類型
巧用協(xié)議的擴(kuò)展功能
不要為了面向協(xié)議而使用協(xié)議
利用協(xié)議實(shí)現(xiàn)前綴效果
簡單版本:
進(jìn)階版-添加泛型 可用性提高
實(shí)例2:
讓類支持前綴步驟:
1.添加對類的獲取
2.添加類方法
3.調(diào)用類方法
使用協(xié)議實(shí)現(xiàn)前綴效果
利用協(xié)議實(shí)現(xiàn)類型判斷
原