亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

通知調用順序問題.

? ?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()方法中循環遍歷觀察者列表,并進行通知,那么通知的順序不就是注冊觀察者時的順序嗎?為什么老師說理論上不行.

正在回答

2 回答

個人理解,是 這幾個觀察者之間沒有緊密的依賴關系!是平行的關系,或者是比較獨立的

0 回復 有任何疑惑可以回復我~

因為在Subject中提供了detach方法 ,如果把他從Subject的List中刪除掉再注冊的話順序就變了

0 回復 有任何疑惑可以回復我~
#1

莊學爸 提問者

如果這樣的話再注冊通知時仍然按照最后注冊的順序.老師這樣說應該是考慮到使用JAVA支持觀察者模式的實現方式,因為注冊觀察者列表時是使用AddObserver()方法.我看了源碼,Observable類中使用Vector向量來存放觀察者列表的,因此注冊觀察者時Vector中存放觀察者對象的順序是不確定,因此通知的順序也不確定.不像完全自定義的觀察者模式使用List接口.
2016-05-02 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

通知調用順序問題.

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號