第四章媽媽和女友訂閱不同的天氣狀態(tài),我有更好的解答,核心代碼在下面,就是重寫notifyObserver()方法用三層for循環(huán)。我太聰明了!
protected void notifyObserver() {
//第一層for循環(huán)遍歷所有訂閱人
????for(Observer observer:observers){
?//訂閱人設(shè)置的要提醒的天氣狀態(tài),字符串?dāng)?shù)組形式存儲
????????String[] observerWeathers= ((ConcreteObserver)observer).getObserverWeathers();
?//目標(biāo)更新的天氣狀態(tài)也是數(shù)組,畢竟一天可以有多種天氣,晴轉(zhuǎn)多云,雨轉(zhuǎn)晴。第二層for循環(huán)遍歷這些狀態(tài)
????????for (String weatherContent : weatherContents) {
//第三層for循環(huán)遍歷訂閱人自定義的需要提醒的天氣狀態(tài)
????????????for(String observerWeather:observerWeathers){
//如果當(dāng)天的天氣狀態(tài)中有訂閱人所關(guān)注的一種天氣,就會提醒訂閱人
????????????????if(weatherContent.equalsIgnoreCase(observerWeather)){
????????????????????observer.update(weatherContents);
//這有個(gè)小bug,如果當(dāng)天天氣為晴和雨,而且訂閱人也設(shè)定了晴和雨時(shí)要提醒,那么會給訂閱人發(fā)送兩次一
//模一樣的消息.用break;跳出也沒有用,畢竟有這么多層循環(huán)
????????????????}
????????}
????}
}
2018-06-21
哇? 你好聰明啊
2016-10-29
?String[] observerWeathers= ((ConcreteObserver)observer).getObserverWeathers(); 這個(gè)能 生成數(shù)組?
2016-01-06
明顯性能差一些啊,樓上。3層for循環(huán),你別嚇我好么