Q1:什么是观察者模式? 定义:在对象之间定义了一对多的依赖,这样一来,当一个对象改变状态,依赖它的对象会收到通知并自动更新。 俗义:有一个称作“主题”的对象和若干个称作“观察者”的对象,它的特点是一对多。比如“老师和学生在教室上课”,老师可以当作“主题”,学生们可以当作“观察者”。 本次案例:模拟气象台向个人、公司、政府发送气温信息。
STEP1定义“主题”接口
主题需要有增加观察者、删除观察者、发送预警信息、设置温度、温度发送等功能
STEP2定义观察者接口
观察者需要接收从主题接口发送的信息,所以只需要写一个方法在这里。
STEP3主题接口的实现
主题接口的实现需要用到vector: Vector 可实现自动增长的对象数组。用来存储观察者。 该类主要实现重写主题接口里的所有方法,具体看代码。
STEP5创建有main方法的主类
在主类里new一个主题,然后往主题里增加观察者,分别是:个人、企业、政府。然后random创建随机整数,在for循环里实现主题对观察者发送相关信息。 看下图实现效果
总结:
由上两图可知,当温度小于35摄氏度时,气象局便不再发送预警,观察者们也就接收不到消息。所以我们明明循环了10次,当只打印了3次,有时只有两次。 以上内容就是观察者模式的案例学习。