对象间的交互

1、直白的对象交互

直接传值和调用。

例如A的信息来自于B,这样限制了实现手段的多样性,维护起来容易,但当A的信息不止是来自于B时,就需要深入了解和修改,存在引发其它问题的风险。

2、轻度抽象的对象间交互

多态:

优点:即使不重载基类方法,也有默认实现。

缺点:响应者只能被一个调度者调用。

接口/协议:

优点:能被多个不同调度者调用。

缺点:无法提供默认实现(swift可以提供),可能需要实现不必要去实现的方法。

3、target-action

借助runtime,无视命名域是否完整(不需针对对象或接口提供声明,只需要有target指针和action描述即可)

但失去了编译器检查,必须不经常变动的业务和代码才适用。

4、响应式的对象间交互

调用者无需知道响应者,工程在较低耦合的情况下完成任务。

但响应者必须知道调用者下达了什么样的指令(NotificationName),同时响应式对象交互方案造成跨层数据传递,不利于数据流的控制。

5、基于闭包的对象间交互

闭包可以抓取上下文,跨越命名域传递,从而使得命名域残缺不全的情况下完成对象间交互成为可能。

限制:发起调用的地方和提供回调的地方必须在同一上下文。

缺点:并不一定希望发起调用和提供回调的地方是同一个地方,或者根本不关心回调。


按以下文章做的笔记:

https://casatwy.com/communication_patterns.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容