面向協(xié)議編程

面向協(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類

Pasted Graphic.png

OOP的不足

但有些問題唆迁,使用OOP并不能很好解決,比如:
如何將BVC竞穷、DVC的公共方法run抽取出來唐责?

基于OOP想到的一些方案?
1.將run方法放到另一個(gè)對象A中来庭,然后BVC妒蔚、DVC擁有對象A屬性
但是多了一些額外的依懶關(guān)系

2.將run方法增加到UIViewController分類中
UIViewController會(huì)越來越臃腫,而且會(huì)影響它的其他所有子類

3.將run方法抽取到新的父類月弛,采取多繼承肴盏?
也不好

POP的解決方案

protocol Runnable {.png
B2.png

這樣關(guān)系就比較有針對性

POP的注意點(diǎn)

  • 優(yōu)先考慮創(chuàng)建協(xié)議,而不是父類(基類)

  • 優(yōu)先考慮值類型(struct帽衙、enum)菜皂,而不是引用類型

  • 巧用協(xié)議的擴(kuò)展功能

  • 不要為了面向協(xié)議而使用協(xié)議

利用協(xié)議實(shí)現(xiàn)前綴效果

簡單版本:

struct MJ.png
print( 1232312KMNK.mj.numberCount).png

進(jìn)階版-添加泛型 可用性提高

先創(chuàng)建一個(gè)前緩文件.png

實(shí)例2:

class Person {}.png

讓類支持前綴步驟:

1.添加對類的獲取


對類方法有用.png

2.添加類方法


加入類方法.png

3.調(diào)用類方法


Person.mj .test().png

使用協(xié)議實(shí)現(xiàn)前綴效果


1先創(chuàng)建一個(gè)前變.png
extension String MJCompatible {).png

利用協(xié)議實(shí)現(xiàn)類型判斷

class VienController UIViewController, Runnable {.png
protocol ArrayType {}.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市厉萝,隨后出現(xiàn)的幾起案子恍飘,更是在濱河造成了極大的恐慌,老刑警劉巖谴垫,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件章母,死亡現(xiàn)場離奇詭異,居然都是意外死亡翩剪,警方通過查閱死者的電腦和手機(jī)乳怎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來前弯,“玉大人蚪缀,你說我怎么就攤上這事∷〕觯” “怎么了询枚?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長浙巫。 經(jīng)常有香客問我金蜀,道長刷后,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任渊抄,我火速辦了婚禮惠险,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘抒线。我一直安慰自己,他們只是感情好渣慕,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布嘶炭。 她就那樣靜靜地躺著,像睡著了一般逊桦。 火紅的嫁衣襯著肌膚如雪眨猎。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天强经,我揣著相機(jī)與錄音睡陪,去河邊找鬼。 笑死匿情,一個(gè)胖子當(dāng)著我的面吹牛兰迫,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播炬称,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼汁果,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了玲躯?” 一聲冷哼從身側(cè)響起据德,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎跷车,沒想到半個(gè)月后棘利,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡朽缴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年善玫,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片不铆。...
    茶點(diǎn)故事閱讀 39,722評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蝌焚,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出誓斥,到底是詐尸還是另有隱情只洒,我是刑警寧澤,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布劳坑,位于F島的核電站毕谴,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜涝开,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一循帐、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧舀武,春花似錦拄养、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至寻馏,卻和暖如春棋弥,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背诚欠。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工顽染, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人轰绵。 一個(gè)月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓粉寞,卻偏偏與公主長得像,于是被迫代替她去往敵國和親左腔。 傳聞我的和親對象是個(gè)殘疾皇子仁锯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評論 2 353

推薦閱讀更多精彩內(nèi)容