设计模式学习笔记(二)观察者模式

2017-05-20  本文已影响88人  Link913

定义

定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,他的所有依赖者都会收到通知并自动更新.

模式特点

个人理解

看完立刻让我联想到了OC中的KVO通知,仔细想了想他们确实都满足上面的特点,一对多,松耦合,改变后能够传递消息.那再仔细想一想,协议block算吗?写起来吧,对他们进行改造其实也能够实现,但是这本身其实没什么意义,因为OC提供给我们的这两种常用的方式其实已经算是很不错的一种方式了,这里不会对KVO通知如何去使用做过多的阐述.
一直在接触的RAC这种框架其实在我看来也是蛮像的,但他有个优点,我们可以在主题方先行结束订阅,也可以在订阅者方提前结束,并且通过函数式的优点,我们可以在时间空间上对信号进行控制,比如节流忽略相关信息,这其实在我看来都是一定程度上在观察者模式方向上的一定优化和扩展.
书中还扩展了我们的观察者不应仅仅只是被动地接收主题发送的信息,还可以主动的去拉取,写法大概上相当于声明一个BOOL值,当要观察的对象(OC中可以通过set方法触发),当我们主动去拉取的时候,改变这个BOOL值此时才可以让通知或者KVO发憷值,发出完再去更改这个BOOL值,这样只有我们每次去拉取的时候他才会发送一次.

观察者模式在OC中的个人猜测实现

上一篇 下一篇

猜你喜欢

热点阅读