通知调用顺序问题.

来源:3-1 认识观察者模式

庄学爸

2016-04-29 18:28

   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回答

  • leowei
    2016-10-27 23:18:57

    个人理解,是 这几个观察者之间没有紧密的依赖关系!是平行的关系,或者是比较独立的

  • nandehutu
    2016-05-02 23:15:48

    因为在Subject中提供了detach方法 ,如果把他从Subject的List中删除掉再注册的话顺序就变了

    庄学爸

    如果这样的话再注册通知时仍然按照最后注册的顺序.老师这样说应该是考虑到使用JAVA支持观察者模式的实现方式,因为注册观察者列表时是使用AddObserver()方法.我看了源码,Observable类中使用Vector向量来存放观察者列表的,因此注册观察者时Vector中存放观察者对象的顺序是不确定,因此通知的顺序也不确定.不像完全自定义的观察者模式使用List接口.

    2016-05-02 23:40:57

    共 1 条回复 >

观察者模式

解决发布/订阅问题的观察者模式,以及何时使用观察者模式

55289 学习 · 36 问题

查看课程

相似问题