观察者模式
观察者模式定义了一个一对多的依赖关系,让多个观察者对象同时监听同一个主题对象。当这个主题状态发生改变时,会通知所有观察者对象,让它们自动更新自己。
场景
- 聊天室程序的创建。服务器创建好后,A、B、C三个客户端连接好公开聊天。A向服务器发送数据,服务器在将数据分别发送给其他在线客户。也就是说,每个客户端需要更新服务器端的数据。
- 网站上,很多人订阅了“Java主题”的新闻。当有这个主题新闻时,就会将这些新闻发给所有订阅的人。
- 大家在玩CS游戏时,服务器需要将每个人的方位变化发给所有的客户。
上面这些场景,我们都可以使用观察者模式来处理。我们可以把多个订阅者、客户称之为观察者;需要同步给多个订阅者的数据封装到对对象中,称之为目标。