如果您使用面向对象编程,那么您肯定熟悉(或至少已经听说过)Observer设计模式。
此模式由一个Observable类组成,该类发出附加events的自定义内容。data其他订阅它的类可能会在触发特定事件时收到通知。
此模式对 iOS 环境很重要,并且跨 API 使用,例如NSNotificationCenter,Combine和RxSwift. 该类observable 发出可能在内部或外部触发的事件。要收听更改,Observer类应该注册以接收通知。
好的,但是我们已经为此设置了委托和闭包
我理解依赖这样一个复杂的模式Observer可能是“用大炮杀死蜜蜂”。例如,您可以将更新从 aViewModel发送到ViewControllervia NotificationCenter。但这样做的核心优势是创建一个类,可以在不知道可能会通知谁的情况下将事件广播给对该事件感兴趣的任何其他类。
假设我们有一个ViewControllerwith a UIButton。单击此按钮时,我们希望通知应用程序的多个位置并通过显示横幅或其他内容来更新 UI。您也可以将网络事件通知多个类。如何处理并不重要,但这就像 Netflix - 我们广播有关新系列的通知,但不知道谁会/有多少人会收到它们。
这就是 的想法Observers。可能需要通知几个或数百万人有关单个班级的事件。
但这背后的魔力是什么?我们如何不observer延迟地通知许多人?这就是这篇文章的目的。我们将实现我们自己的习惯NotificationCenter来保存不同但相关的事件和观察者的集合。这样一来,每当我们NotificationCenter