An interviewer asked me:
What is Observer
and Observable
and when should we use them?
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:
1)
Observable
is a class andObserver
is an interface.2) The
Observable
class maintains a list ofObserver
s.3) When an
Observable
object is updated, it invokes theupdate()
method of each of itsObserver
s to notify that, it is changed.
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
? What are the setChanged()
and notifyObservers(message)
methods for?