問題:
An interviewer asked me: 一位採訪者問我:
What is Observer
and Observable
and when should we use them? 什麼是Observer
和Observable
以及我們何時應該使用它們?
I wasn't aware of these terms, so when I got back home and started Googling about Observer
and Observable
, I found some points from different resources: 我不知道這些術語,所以當我回到家並開始使用Googling Observer
和Observable
,我從不同的資源中找到了一些觀點:
1)
Observable
is a class andObserver
is an interface. 1)Observable
是一個類,Observer
是一個接口。2) The
Observable
class maintains a list ofObserver
s. 2)Observable
類維護一個Observer
列表。3) When an
Observable
object is updated, it invokes theupdate()
method of each of itsObserver
s to notify that, it is changed. 3)更新Observable
對象時,它會調用每個Observer
的update()
方法來通知它,它會被更改。
I found this example: 我找到了這個例子:
import java.util.Observable;
import java.util.Observer;
class MessageBoard extends Observable
{
public void changeMessage(String message)
{
setChanged();
notifyObservers(message);
}
}
class Student implements Observer
{
@Override
public void update(Observable o, Object arg)
{
System.out.println("Message board changed: " + arg);
}
}
public class MessageBoardTest
{
public static void main(String[] args)
{
MessageBoard board = new MessageBoard();
Student bob = new Student();
Student joe = new Student();
board.addObserver(bob);
board.addObserver(joe);
board.changeMessage("More Homework!");
}
}
But I don't understand why we need Observer
and Observable
? 但我不明白爲什麼我們需要Observer
和Observable
? What are the setChanged()
and notifyObservers(message)
methods for? 什麼是setChanged()
和notifyObservers(message)
方法?
解決方案:
參考一: https://en.stackoom.com/question/vfYg參考二: https://stackoom.com/question/vfYg