【应用场景】
一般为model层,对controller和view进行的通知方式,不关心谁去接收,只负责发布信息。
【优势】
解耦合(减弱对象之间的耦合程度)、接口隔离原则(分散定义多个接口,预防外来变更的扩散,提高系统的灵活性和可维护性)
【应注意】
设计接口的时候,花些时间去思考和筹划,才能准确地实践这一原则;个人用的时候发现观察者会接收到多次相同的通知,造成泛滥聊天信息的后果。
【敏捷原则】
开放-封闭原则(对于扩展是开放的,对于更改是封闭的)
【实例】
例1.NSNotificationCenter,注册通知中心,任何位置可以发送消息,注册观察者的对象可以接收。例如:
发送通知:
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
[nc postNotificationName:LCLNotificationDidReceiveKuaiXinMessage object:self userInfo:dic];
注册观察者接受通知:
//录音
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(recvLCLRecorderBcast:) name:@"lclrecorder" object:nil];
移除观察者:
[[NSNotificationCenter defaultCenter]removeObserver:self];
例2.kvo,键值对改变通知的观察者,平时基本没用过。
注-接口隔离: