观察者模式详解

官方定义:定义对象之间的一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。

认识观察者模式:

  1、目标与观察者之间的关系:目标与观察者之间是一对多的关系。

  2、单向依赖:只有目标知道什么时候通知观察者。

  3、命名模式:又称为发布-订阅模式,目标接口定义后面跟subject,观察者接口定义后面跟observer,观察者接口的更新方法建议为update,方法的参数是根据需要定义的。

  4、触发通知的时机:先改变后通知。

观察者实现的两种方式:

  1、推模型:目标对象主动向观察者推送目标的详细信息,推送的信息通常是目标对象的全部或部分数据。

  2、拉模型:目标对象在通知的时候只传递少量信息,如果观察者需要更具体的信息,由观察者主动到目标对象获取,相当于是观察者主动在目标对象中拉数据。

两种模式的比较:

  1、推模型是假定目标对象知道观察者所需要的数据,而拉模型是目标对象具体需要什么数据,直接把自生传递给观察者,由观察者来取值,推模型会使观察者对象难以复用;

  2、拉模型下,update方法的参数是对象本身,基本可以适应各种情况的需要。

观察者的优点:

  1、观察者模式实现了观察者和目标之间的抽象耦合。

  2、观察者模式实现了动态联动。

  3、观察者模式支持广播通信。

观察者的缺点:

  1、可能会引起无畏的操作。

猜你喜欢

转载自www.cnblogs.com/niuyg928/p/11300008.html
今日推荐