《Head First设计模式》之观察者模式

讲述观察者模式之前,来看看原书的一个“气象观测站”的应用。该应用主要是由气象站提供给第三方客户气象相关数据,由第三方在相关展示面板上展示。

《Head First设计模式》之观察者模式


《Head First设计模式》之观察者模式


目前我们知道些什么?

《Head First设计模式》之观察者模式

《Head First设计模式》之观察者模式


来看看上面的错误实例究竟错在哪里了?

《Head First设计模式》之观察者模式


接下来该认识一下本文的主角【观察者模式】

《Head First设计模式》之观察者模式

《Head First设计模式》之观察者模式


观察者模式的定义:

《Head First设计模式》之观察者模式

《Head First设计模式》之观察者模式


《Head First设计模式》之观察者模式


《Head First设计模式》之观察者模式


那我们可以继续之前气象站的相关设计了:

《Head First设计模式》之观察者模式

对我们所设计的进行一下具体实现吧!

定义 Subject、Observer和DisplayElement接口

    《Head First设计模式》之观察者模式

对Subject接口的实现:

《Head First设计模式》之观察者模式


简历气象布告板(实现Observer和DisplayElement接口):

《Head First设计模式》之观察者模式


可以进行测试了。。。

《Head First设计模式》之观察者模式




其实java也有内置的观察者模式,下面来做一下简单介绍;


《Head First设计模式》之观察者模式

《Head First设计模式》之观察者模式


《Head First设计模式》之观察者模式


《Head First设计模式》之观察者模式


尝试下使用JDK内置的观察者模式来实现气象站的应用:

《Head First设计模式》之观察者模式

然后实现气象的展示面板:

《Head First设计模式》之观察者模式


这就完成了使用JDK内置观察者模式来实现气象站应用,这边就不做测试了。

但是在实际的开发中,其实JDK内置的观察者模式还是存在很多问题,导致使用的弹性不够高。

《Head First设计模式》之观察者模式


最后总结一下本文的要点:

《Head First设计模式》之观察者模式