这判断性能很差,不能动态实现区分观察者.我的方法是在观察者接口声明一个获取不需要更新的内容的方法,方法返回字符串数组.观察者把不需要更新的信息保存在字符串数组中.
在被观察者类的notify方法中定义临时变量存放准备更新的状态信息,然后定义一个布尔类型的标识,默认为true,用来判断是否需要更新.然后通过for循环遍历观察者列表,再嵌套一个for循环来获取观察者不需要更新的内容数组,临时变量与获取不需要更新的内容比较,如果符合则把标识设置为false,可直接跳出当前循环,没必要再继续判断,然后如果更新标识为true,则更新,否则把更新标识重置为true.
在被观察者类的notify方法中定义临时变量存放准备更新的状态信息,然后定义一个布尔类型的标识,默认为true,用来判断是否需要更新.然后通过for循环遍历观察者列表,再嵌套一个for循环来获取观察者不需要更新的内容数组,临时变量与获取不需要更新的内容比较,如果符合则把标识设置为false,可直接跳出当前循环,没必要再继续判断,然后如果更新标识为true,则更新,否则把更新标识重置为true.
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()方法中循环遍历观察者列表,并进行通知,那么通知的顺序不就是注册观察者时的顺序吗?为什么老师说理论上不行.
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()方法中循环遍历观察者列表,并进行通知,那么通知的顺序不就是注册观察者时的顺序吗?为什么老师说理论上不行.
2016-04-29