1.观察者模式
观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己。
2.发布订阅模式
发布订阅模式理念和观察者模式相同,但是处理方式上不同:订阅者把自己想订阅的事件注册到调度中心,当该事件触发时候,发布者发布该事件到调度中心(顺带上下文),由调度中心统一调度订阅者注册到调度中心的处理代码。
3.区别
(1)在观察者模式中,观察者是知道Subject的,Subject一直保持对观察者进行记录。然而,在发布订阅模式中,发布者和订阅者不知道对方的存在。它们只有通过消息代理进行通信。
(2)发布订阅模式中,组件是松散耦合的,正好和观察者模式相反。
4.观察者模式KVO
详见KVO文章//www.greatytc.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];
}