Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2015
    Messaggi
    31

    Problemi con il pattern observer

    Salve a tutti, sto implementando nel mio programma uno scenario tramite il pattern Observer.
    Ho un oggetto che è osservatore di una serie di code ad esso associate, che estendono la classe Observable.
    Vorrei che quando in una di queste code viene immesso un oggetto, l'osservatore si aggiorni prelevando l'oggetto.
    Ho realizzato questo meccanismo tramite i metodi
    codice:
     setChanged()  notifyObservers()
    nella coda, e ovviamente
    codice:
    update()
    nell'osservatore.
    Purtroppo, però, la soluzione non funziona in quanto l'osservatore controlla tutte le code che osserva, non solo quella specifica in cui è avvenuto l'inserimento. E poichè alcune sono vuote, il programma restituisce un'eccezione.
    Come posso fare per far agire l'osservatore in maniera mirata riguardo la specifica coda?
    Grazie mille in anticipo!

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Naomi92 Visualizza il messaggio
    Come posso fare per far agire l'osservatore in maniera mirata riguardo la specifica coda?
    Purtroppo non è molto chiaro (a me) tutto il contesto della tua applicazione. Puoi chiarire o descrivere meglio? (o mostrare più codice)

    È coinvolto anche il multi-threading? Cioè queste "code" sono accedute da thread diversi? (es. 1~N thread inseriscono nella coda e 1~M thread estraggono dalla coda)
    Perché se sì, cioè se c'è il multi-threading nella gestione delle code, il solo pattern "Observer" generalmente non è la soluzione, perlomeno non senza fare altre valutazioni. In genere si usano code "bloccanti". Ma ovviamente dipende dallo scenario ...
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.