protected void notifyObserver() {
//第一层for循环遍历所有订阅人
for(Observer observer:observers){
//订阅人设置的要提醒的天气状态,字符串数组形式存储
String[] observerWeathers= ((ConcreteObserver)observer).getObserverWeathers();
//目标更新的天气状态也是数组,毕竟一天可以有多种天气,晴转多云,雨转晴。第二层for循环遍历这些状态
for (String weatherContent : weatherContents) {
//第三层for循环遍历订阅人自定义的需要提醒的天气状态
for(String observerWeather:observerWeathers){
//如果当天的天气状态中有订阅人所关注的一种天气,就会提醒订阅人
if(weatherContent.equalsIgnoreCase(observerWeather)){
observer.update(weatherContents);
//这有个小bug,如果当天天气为晴和雨,而且订阅人也设定了晴和雨时要提醒,那么会给订阅人发送两次一
//模一样的消息.用break;跳出也没有用,毕竟有这么多层循环
}
}
}
}
哇 你好聪明啊
String[] observerWeathers= ((ConcreteObserver)observer).getObserverWeathers(); 这个能 生成数组?
明显性能差一些啊,楼上。3层for循环,你别吓我好么