设计模式:监听模式

发布时间:2021-10-01 22:57:17 阅读:(190)

    监听模式

    什么是监听模式

    在对象间定义一种一对多的依赖关系,当这个对象状态发生改变时,所有依赖它的对象都会被通知并自动更新

    监听模式是一种一对多的关系,可以有任意个(一个或多个)观察者对象同时监听某一个对象。监听的对象叫观察者(后面提到监听者,其实就指观察者,两者是相同的),被监听的对象叫被观察者(Observable,也叫主题,即Subject)。被观察者对象在状态或内容(数据)发生变化时,会通知所有观察者对象,使它们能够做出相应的变化(如自动更新自己的信息)。

    设计思想

    监听模式又叫观察者模式,就是观察与被观察的关系,核心思想就是再被观察者和观察者之间建立一种自动触发的关系

    设计要点

    • 明确谁是观察者谁是被观察者
    • 被观察者再发送广播通知时,无需指定具体的观察者,观察者可以自己决定是否订阅通知
    • 被观察者至少要有三个方法:添加监听者、移除监听者、通知监听者的方法。监听者至少要有一个方法:更新方法,即更新当前内容,做出相应处理

    推模型和拉模型

    监听模式根据侧重的功能还可分为推模型和拉模型

    推模型

    被观察者对象向观察者推送主题的详细信息,不管观察者是否需要,推送的信息通常是主题对象的全部或部分数据。

    拉模型

    被观察者在通知观察者的时候,只传递少量信息。如果观察者需要更多信息,由观察者主动到被观察者对象中获取,相当于观察者从被观察者对象中拉数据。

    应用场景

    • 对一个对象状态或数据的更新需要其他对象同步更新,或者一个对象的更新需要依赖另一个对象的更新
    • 对象仅需要将自己的更新通知给其他对象而不需要知道其他对象的细节,如消息推送