Интервьюер спросил меня:
Что такое Observer
и Observable
и когда мы должны их использовать?
Я не знал об этих терминах, поэтому, когда я вернулся домой и начал поискать в Google данные об Observer
и Observable
, я обнаружил некоторые моменты из разных ресурсов:
1)
Observable
- это класс, аObserver
- это интерфейс.2) Класс
Observable
поддерживает списокObserver
s.3) Когда объект
Observable
обновляется, он вызывает методupdate()
каждого из егоObserver
чтобы уведомить его об изменении.
Я нашел этот пример:
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!");
}
}
Но я не понимаю, зачем нам Observer
и Observable
? Для чего нужны setChanged()
и notifyObservers(message)
?