1扣唱、直白的對象交互
直接傳值和調(diào)用。
例如A的信息來自于B团南,這樣限制了實現(xiàn)手段的多樣性噪沙,維護起來容易,但當A的信息不止是來自于B時吐根,就需要深入了解和修改正歼,存在引發(fā)其它問題的風險。
2拷橘、輕度抽象的對象間交互
多態(tài):
優(yōu)點:即使不重載基類方法局义,也有默認實現(xiàn)。
缺點:響應者只能被一個調(diào)度者調(diào)用冗疮。
接口/協(xié)議:
優(yōu)點:能被多個不同調(diào)度者調(diào)用萄唇。
缺點:無法提供默認實現(xiàn)(swift可以提供),可能需要實現(xiàn)不必要去實現(xiàn)的方法术幔。
3另萤、target-action
借助runtime,無視命名域是否完整(不需針對對象或接口提供聲明诅挑,只需要有target指針和action描述即可)
但失去了編譯器檢查四敞,必須不經(jīng)常變動的業(yè)務和代碼才適用。
4拔妥、響應式的對象間交互
調(diào)用者無需知道響應者目养,工程在較低耦合的情況下完成任務。
但響應者必須知道調(diào)用者下達了什么樣的指令(NotificationName)毒嫡,同時響應式對象交互方案造成跨層數(shù)據(jù)傳遞癌蚁,不利于數(shù)據(jù)流的控制。
5兜畸、基于閉包的對象間交互
閉包可以抓取上下文努释,跨越命名域傳遞,從而使得命名域殘缺不全的情況下完成對象間交互成為可能咬摇。
限制:發(fā)起調(diào)用的地方和提供回調(diào)的地方必須在同一上下文伐蒂。
缺點:并不一定希望發(fā)起調(diào)用和提供回調(diào)的地方是同一個地方,或者根本不關(guān)心回調(diào)肛鹏。
按以下文章做的筆記:
https://casatwy.com/communication_patterns.html