第四章媽媽和女友訂閱不同的天氣狀態,我有更好的解答,核心代碼在下面,就是重寫notifyObserver()方法用三層for循環。我太聰明了!
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;跳出也沒有用,畢竟有這么多層循環
????????????????}
????????}
????}
}
2018-06-21
哇? 你好聰明啊
2016-10-29
?String[] observerWeathers= ((ConcreteObserver)observer).getObserverWeathers(); 這個能 生成數組?
2016-01-06
明顯性能差一些啊,樓上。3層for循環,你別嚇我好么