IOS设计模式之观察者模式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IOS设计模式之观察者模式相关的知识,希望对你有一定的参考价值。

什么是观察者模式?打个比方,就像你订报纸,比如你想知道美国最近发生了哪些新闻,你可能会订阅一份美国周刊,然后美国一旦有了新的故事,美国周刊就发一刊,并邮寄给你,当你收到这份报刊,然后你就能了解美国的最新动态。其实这就是观察者模式,A对B的变化感兴趣,就注册为B的观察者,当B发生变化时通知A,告知B发生可变化。这是一种非常典型的观察者的用法,我把这种方法叫做经典观察者模式。当然与之相对的还有另外一种观察者模式------广义观察者模式。

 

 

从经典的角度看,观察者模式是一种通知变化的模式,一般认为只在对象发生变化感兴趣的场合有用。主题对象知道有观察者存在,设置会维护观察者的一个队列,而从广义的角度看,观察者模式是中传递变化数据的模式,需要查看对象属性时就会使用的一种模式,主题对象不知道观察者的存在,更像是围观者。需要知道主题对象的状态,所以即使在主题对象没有发生改变的时候,观察者也可能回去访问主题对象。换句话说广义观察者模式,是在不同对象之间传递数据的一种模式。

 

 

观察者模式应当是面向对象编程中被大规模使用的设计模式之一,从方法的角度出发,传统的认知论认为,世界是由对象组成的,我们通过不停的观察和了解就能够了解对象的本质。整个人类的认知规模型就是建立在“观察”这种行为之上的。我们通过不停与世界中的其他对象交互,并观察之来了解这个世界。同样,在程序的世界中,我们构建的每一个实例,也是通过观察其他实例的变化来并作出响应,以来完成功能。这也就是,为什么把观察者模式单独提出来,做一个专门剖析的原因---在我看来他是很多其他设计模式的基础模式,并且是编程中极其重要的一种设计模式。

 

经典观察者模式

经典观察者模式被认为是对象的行为模式,又叫发布订阅(Publish/Subscribe)模式,模型-视图(Model、View)模式,源-监听器(Source/Listener)模式或者从属者模式。经典观察者模式定义一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使他们能够自动更新自己活着做出相应的一些动作。在文章一开始举得例子就是典型的观察者模式的应用。

 

以上是关于IOS设计模式之观察者模式的主要内容,如果未能解决你的问题,请参考以下文章

IOS设计模式之观察者模式

iOS中的 观察者模式 之 KVO

IOS设计模式-观察者模式

iOS 设计模式(五)-KVO 详解

iOS-事件响应链单例模式工厂模式观察者模式

设计模式IOS篇-第三章:观察者模式