這判斷性能很差,不能動態(tài)實現(xiàn)區(qū)分觀察者.我的方法是在觀察者接口聲明一個獲取不需要更新的內(nèi)容的方法,方法返回字符串數(shù)組.觀察者把不需要更新的信息保存在字符串數(shù)組中.
在被觀察者類的notify方法中定義臨時變量存放準備更新的狀態(tài)信息,然后定義一個布爾類型的標識,默認為true,用來判斷是否需要更新.然后通過for循環(huán)遍歷觀察者列表,再嵌套一個for循環(huán)來獲取觀察者不需要更新的內(nèi)容數(shù)組,臨時變量與獲取不需要更新的內(nèi)容比較,如果符合則把標識設置為false,可直接跳出當前循環(huán),沒必要再繼續(xù)判斷,然后如果更新標識為true,則更新,否則把更新標識重置為true.
在被觀察者類的notify方法中定義臨時變量存放準備更新的狀態(tài)信息,然后定義一個布爾類型的標識,默認為true,用來判斷是否需要更新.然后通過for循環(huán)遍歷觀察者列表,再嵌套一個for循環(huán)來獲取觀察者不需要更新的內(nèi)容數(shù)組,臨時變量與獲取不需要更新的內(nèi)容比較,如果符合則把標識設置為false,可直接跳出當前循環(huán),沒必要再繼續(xù)判斷,然后如果更新標識為true,則更新,否則把更新標識重置為true.
2016-04-30
List<String> list =new ArrayList<String>();
list.add("1");
list.add("2");
list.add("3");
list.add("4");
list.add("5");
for(String str:list){
System.out.println(str);
}
運行結果為1 2 3 4 5
如果目標接口使用List集合來存儲觀察者列表,然后在notify()方法中循環(huán)遍歷觀察者列表,并進行通知,那么通知的順序不就是注冊觀察者時的順序嗎?為什么老師說理論上不行.
list.add("1");
list.add("2");
list.add("3");
list.add("4");
list.add("5");
for(String str:list){
System.out.println(str);
}
運行結果為1 2 3 4 5
如果目標接口使用List集合來存儲觀察者列表,然后在notify()方法中循環(huán)遍歷觀察者列表,并進行通知,那么通知的順序不就是注冊觀察者時的順序嗎?為什么老師說理論上不行.
2016-04-29