在Java中可以观察到 [英] Observable in Java
问题描述
这是一个我试图找出的例子:
public class IntegerDataBag extends Observable implements Iterable< Integer> {
private ArrayList< Integer> list = new ArrayList< Integer>();
public void add(Integer i){
list.add(i);
setChanged();
notifyObservers();
}
public Iterator< Integer> iterator(){
return list.iterator();
}
public Integer remove(int index){
if(index< list.size()){
Integer i = list.remove(index);
setChanged();
notifyObservers();
return i;
}
返回null;
}
}
public class IntegerAdder implements Observer {
private IntegerDataBag bag;
public IntegerAdder(IntegerDataBag包){
this.bag = bag;
bag.addObserver(this);
}
public void update(Observable o,Object arg){
if(o == bag){
System.out.println( IntegerDataBag已更改);
}
}
}
-
bag.addObserver()
只能由于IntegerDataBag
扩展可观察
? -
这个观察者在哪里添加?什么是创建和在哪里?
-
setChanged()
和notifyObservers()
? -
我不明白
更新
方法;arg
代表什么?为什么我需要检查o == bag
?为什么我会更新另一个可观察的? -
为什么我还需要这个观察者?
- 是的。
addObserver
是Observable
抽象类中的一种方法。请参阅Java文档中的可观察到的。 - 它被添加到
Observable
中的列表中。 - 调用
notifyObservers
将不会执行任何操作,直到setChanged
设置为止。 / li>
- 您可能在同一个应用程序中有多个Observables。
-
观察者
是一种常见的设计模式。通常的例子是当你有一个模型和多个视图。每个视图都是模型的观察者;如果模型更改,则视图将被更新。
I'm trying to understand the Observer and the Observable.
Here's an example that I'm trying to figure out:
public class IntegerDataBag extends Observable implements Iterable<Integer> {
private ArrayList<Integer> list= new ArrayList<Integer>();
public void add(Integer i){
list.add(i);
setChanged();
notifyObservers();
}
public Iterator<Integer> iterator(){
return list.iterator();
}
public Integer remove (int index){
if (index< list.size()){
Integer i = list.remove(index);
setChanged();
notifyObservers();
return i;
}
return null;
}
}
public class IntegerAdder implements Observer {
private IntegerDataBag bag;
public IntegerAdder(IntegerDataBag bag) {
this.bag = bag;
bag.addObserver(this);
}
public void update(Observable o, Object arg) {
if (o == bag) {
System.out.println("The contents of the IntegerDataBag have changed");
}
}
}
The
bag.addObserver()
can be made only becauseIntegerDataBag
extendsObservable
?Where is this observer being add to? What is being created and where?
What is the difference between
setChanged()
andnotifyObservers()
?I don't understand the
update
method; what doesarg
stand for? Why do I need to check thato==bag
? Why would I update another observable?Why should I need this observer anyway?
- Yes.
addObserver
is a method in theObservable
abstract class. See Observable in the Java documentation. - It is added to a list in
Observable
. - A call to
notifyObservers
will do nothing untilsetChanged
is set. - You might have multiple Observables in the same application.
Observer
is a common design pattern. The usual example is when you have a Model and multiple Views. Each View is an Observer on the Model; if the Model changes, the Views get updated.
这篇关于在Java中可以观察到的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!