# Why
描述对象之间存在的一对多(含一对一)的联动,观察者模式应运而生,定义了对象之间一种一对多的依赖关系,让一个对象的改变能够影响其他对象。
观察者模式(Observer Pattern):每当一个对象状态发生改变时,其相关依赖对象都会被通知并自动更新。别名发布-订阅(Publish/Subscribe)模式、模式-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式。
# What
# UML
观察者模式描述了如何建立对象之间的依赖关系,以及如何构造满足这种需求的系统。
# 示例
Sunny软件公司欲开发一款多人联机对战游戏(类似魔兽世界、星际争霸等游戏),在该游戏中,多个玩家可以加入同一战队组成联盟,当战队中某一成员受到敌人攻击时将给所有其他盟友发送通知,盟友收到通知后将作出响应。
# 适用场景
- 一个抽象模型有两个方面,其中一个方面依赖于另一个方面,将这两个方面封装在独立对象中使他们可以对立的改变和复用
- 一个对象的改变将导致一个或者多个对象也发生改变,而且并不知道具体是谁、有多少对象会受到影响