不是應(yīng)該先寫接口再寫業(yè)務(wù)邏輯,怎么還可以這樣寫?obsercer的update()方法拿來的?早去干嗎了??!
2016-06-24
這判斷性能很差,不能動(dòng)態(tài)實(shí)現(xiàn)區(qū)分觀察者.我的方法是在觀察者接口聲明一個(gè)獲取不需要更新的內(nèi)容的方法,方法返回字符串?dāng)?shù)組.觀察者把不需要更新的信息保存在字符串?dāng)?shù)組中.
在被觀察者類的notify方法中定義臨時(shí)變量存放準(zhǔn)備更新的狀態(tài)信息,然后定義一個(gè)布爾類型的標(biāo)識(shí),默認(rèn)為true,用來判斷是否需要更新.然后通過for循環(huán)遍歷觀察者列表,再嵌套一個(gè)for循環(huán)來獲取觀察者不需要更新的內(nèi)容數(shù)組,臨時(shí)變量與獲取不需要更新的內(nèi)容比較,如果符合則把標(biāo)識(shí)設(shè)置為false,可直接跳出當(dāng)前循環(huán),沒必要再繼續(xù)判斷,然后如果更新標(biāo)識(shí)為true,則更新,否則把更新標(biāo)識(shí)重置為true.
在被觀察者類的notify方法中定義臨時(shí)變量存放準(zhǔn)備更新的狀態(tài)信息,然后定義一個(gè)布爾類型的標(biāo)識(shí),默認(rèn)為true,用來判斷是否需要更新.然后通過for循環(huán)遍歷觀察者列表,再嵌套一個(gè)for循環(huán)來獲取觀察者不需要更新的內(nèi)容數(shù)組,臨時(shí)變量與獲取不需要更新的內(nèi)容比較,如果符合則把標(biāo)識(shí)設(shè)置為false,可直接跳出當(dāng)前循環(huán),沒必要再繼續(xù)判斷,然后如果更新標(biāo)識(shí)為true,則更新,否則把更新標(biāo)識(shí)重置為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);
}
運(yùn)行結(jié)果為1 2 3 4 5
如果目標(biāo)接口使用List集合來存儲(chǔ)觀察者列表,然后在notify()方法中循環(huán)遍歷觀察者列表,并進(jìn)行通知,那么通知的順序不就是注冊(cè)觀察者時(shí)的順序嗎?為什么老師說理論上不行.
list.add("1");
list.add("2");
list.add("3");
list.add("4");
list.add("5");
for(String str:list){
System.out.println(str);
}
運(yùn)行結(jié)果為1 2 3 4 5
如果目標(biāo)接口使用List集合來存儲(chǔ)觀察者列表,然后在notify()方法中循環(huán)遍歷觀察者列表,并進(jìn)行通知,那么通知的順序不就是注冊(cè)觀察者時(shí)的順序嗎?為什么老師說理論上不行.
2016-04-29