面试题:用Java语言模拟一个观察者模式。
先看测试程序:
有一个被观测的对象天气类——Whether
两个天气观察者——WhetherDisplay1,WhetherDisplay2。
天气改变后,两个观察者输出观察结果。
public class Test {
public static void main(String[] args) {
Whether whether=new Whether(); //实例化被观察对象 天气类 whether
WhetherDisplay1 d1=new WhetherDisplay1(whether); //实例化两个天气观察者 d1 与 d2
WhetherDisplay2 d2=new WhetherDisplay2(whether);
whether.setTemperature(27); // 天气类,变化 27度,26度。两个观察者d1 d2.观察到变化立即输出27.0 ,26.0
whether.setTemperature(26);
}
}
输出结果:
模拟观察者模式需要先写两个接口 Subject与Observer
Subject接口是被观察者接口,天气类Whether