Cuándo debemos usar Observer y Observable


Un entrevistador me preguntó:

¿Qué es Observer y Observable y cuando debemos usar?

No estaba al tanto de estos términos, así que cuando volví a casa y empecé a buscar en Google Observer y Observable y encontré algunos puntos de diferentes recursos:

1) Observable es una clase y Observer es una interfaz.

2) Observable clase mantener una lista de Observadores.

3) Cuando se actualiza un objeto observable, invoca el método update() de cada uno de sus Observadores para notificar que, se cambia.

Encontré este ejemplo:

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!");
    }
}

Pero no entiendo por qué necesitamos Observer y Observable? ¿Para qué sirven los métodos setChanged() y notifyObservers(message)?


Warning: Undefined property: agent_blog_content::$date_asked in /var/www/agent_etc/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 32

Warning: Undefined property: agent_blog_content::$count_answers in /var/www/agent_etc/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 52