iOS 设计模式(二)-观察者和发布订阅模式

1.观察者模式

观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己。


2.发布订阅模式

发布订阅模式理念和观察者模式相同,但是处理方式上不同:订阅者把自己想订阅的事件注册到调度中心,当该事件触发时候,发布者发布该事件到调度中心(顺带上下文),由调度中心统一调度订阅者注册到调度中心的处理代码。


3.区别

(1)在观察者模式中,观察者是知道Subject的,Subject一直保持对观察者进行记录。然而,在发布订阅模式中,发布者和订阅者不知道对方的存在。它们只有通过消息代理进行通信。
(2)发布订阅模式中,组件是松散耦合的,正好和观察者模式相反。

4.观察者模式KVO

详见KVO文章https://www.jianshu.com/p/236a013cc244

5.发布订阅模式Notification

注册通知

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(notice:) name:@"tongzhi" object:nil];
-(void)notice:(id)sender{  
  NSLog(@"%@",sender);
}

发布通知

//创建通知对象
NSNotification *notification = [NSNotification notificationWithName:@"tongzhi" object:nil];
//发送通知
 [[NSNotificationCenter defaultCenter] postNotification:notification];

移除通知

- (void)dealloc {
  //删除根据name和对象,如果object对象设置为nil,则删除所有叫name的,否则便删除对应的
    [[NSNotificationCenter defaultCenter] removeObserver:self name:@"tongzhi" object:nil];
}

你可能感兴趣的:(iOS 设计模式(二)-观察者和发布订阅模式)