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
Le classi Player, Table e GameModel estendono Observable. GameModel inizializza il tutto, al termine del quale effettua la notifica: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();
Messagecodice://ci sono varie operazioni prima... Message message = new Message(Message.initialization); setChanged(); notifyObservers(message);
Ovviamente la view implementaObserver e definisce il metodo update().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; } }
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?

Rispondi quotando

