【图解设计模式系列】The Observer Pattern: 观察者模式

什么是观察者模式?这可真的是个奇怪的命名,完全不明白为什么这样命名?看看定义:

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

观察者模式又被称为发布-订阅模式(publish-subscribe)。

英文解释:
Publishers (Subject) + Subscribers (Observers) = Observer Pattern
defines a one to many dependency between objects so that when one object changes state, all of its dependents are notified and updated automatically.
在这里插入图片描述
中文版图:
在这里插入图片描述

所以这种模式有下面四种组成对象:
Subject(目标接口)、ConcreteSubject(具体的目标)

1.一个目标对象可以被多个观察者观察
2.目标对象可以注册(register)和退订(remove)观察者
3.当目标的状态发生改变时,目标负责通知所有注册的、有效的观察者。

Observer(观察者)、ConcreteObserver(具体的观察者)

1.能够保存注册的观察者对象(具有一个容器)
2.提供注册和删除观察者的方法(注册观察者和删除观察者方法)
3.能够通知所有注册的观察者对象(提供一个通知方法)

实例中的实例

JDK对观察者模式的支持
由于观察者模式应用的非常广泛,所以JDK提供了内置的支持。但是许多时候,自己建立这一切会更具有弹性(况且建立这一切并不是很麻烦)
此外 还有我们常见的push和pull,这种系统设计中很常见见。

posted @ 2020-12-28 08:24  EvanMeetTheWorld  阅读(68)  评论(0)    收藏  举报