Salve. Sto implementando il pattern observer ed il problema è che la classe che osserva (la View) sembra non ricevere la notifica di cambiamento (e quindi non invoca update()) da parte di uno specifico oggetto osservabile.
Arrivo al codice:
Dove inizializzo il tutto
codice:
//creazione oggetti
GameFrame gameFrame = new GameFrame();
Player human = new Player("Prova");
Player computer = new Player();
Table table = new Table();
GameModel model = new GameModel(human, computer, table);
human.addObserver(gameFrame);
computer.addObserver(gameFrame);
model.addObserver(gameFrame);
GameController.getInstance().setModel(model);
GameController.getInstance().setView(gameFrame);
gameFrame.setVisible(true);
dispose();
Le classi Player, Table e GameModel estendono Observable. GameModel inizializza il tutto, al termine del quale effettua la notifica:
codice:
//ci sono varie operazioni prima...
Message message = new Message(Message.initialization);
setChanged();
notifyObservers(message);
Message
codice:
public class Message {
private String mex;
public static final String initialization = "initialization";
public Message(String m) {
mex = m;
}
@Override
public String toString() {
return mex;
}
}
Ovviamente la view implementaObserver e definisce il metodo update().
Ho inserito una normale println dentro il metodo update() che viene correttamente eseguita
se la notifica arriva dalla classe Playel. Non viene stampato nulla se la notifica arriva dalla classe GameModel. Why?