1、直白的對(duì)象交互
直接傳值和調(diào)用。
例如A的信息來(lái)自于B,這樣限制了實(shí)現(xiàn)手段的多樣性,維護(hù)起來(lái)容易,但當(dāng)A的信息不止是來(lái)自于B時(shí),就需要深入了解和修改,存在引發(fā)其它問(wèn)題的風(fēng)險(xiǎn)。
2、輕度抽象的對(duì)象間交互
多態(tài):
優(yōu)點(diǎn):即使不重載基類(lèi)方法,也有默認(rèn)實(shí)現(xiàn)。
缺點(diǎn):響應(yīng)者只能被一個(gè)調(diào)度者調(diào)用。
接口/協(xié)議:
優(yōu)點(diǎn):能被多個(gè)不同調(diào)度者調(diào)用。
缺點(diǎn):無(wú)法提供默認(rèn)實(shí)現(xiàn)(swift可以提供),可能需要實(shí)現(xiàn)不必要去實(shí)現(xiàn)的方法。
3、target-action
借助runtime,無(wú)視命名域是否完整(不需針對(duì)對(duì)象或接口提供聲明,只需要有target指針和action描述即可)
但失去了編譯器檢查,必須不經(jīng)常變動(dòng)的業(yè)務(wù)和代碼才適用。
4、響應(yīng)式的對(duì)象間交互
調(diào)用者無(wú)需知道響應(yīng)者,工程在較低耦合的情況下完成任務(wù)。
但響應(yīng)者必須知道調(diào)用者下達(dá)了什么樣的指令(NotificationName),同時(shí)響應(yīng)式對(duì)象交互方案造成跨層數(shù)據(jù)傳遞,不利于數(shù)據(jù)流的控制。
5、基于閉包的對(duì)象間交互
閉包可以抓取上下文,跨越命名域傳遞,從而使得命名域殘缺不全的情況下完成對(duì)象間交互成為可能。
限制:發(fā)起調(diào)用的地方和提供回調(diào)的地方必須在同一上下文。
缺點(diǎn):并不一定希望發(fā)起調(diào)用和提供回調(diào)的地方是同一個(gè)地方,或者根本不關(guān)心回調(diào)。

按以下文章做的筆記:
https://casatwy.com/communication_patterns.html