为了账号安全,请及时绑定邮箱和手机立即绑定

通知调用顺序问题.

   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下载
官方微信