When should we use Observer and Observable?

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 and Observer is an interface.

2) The Observable class maintains a list of Observers.

3) When an Observable object is updated, it invokes the update() method of each of its Observers 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?

10 Answers
10

Leave a Comment