Sono in una situazione complicata in cui ho bisogno di utilizzare il pattern Observer ma non conosco il modo migliore per farlo.
Ecco un breve briefing sulla mia domanda:
Sto implementando un'applicazione GUI che consente agli utenti di creare diagrammi di flusso e mappe mentali facendo cadere forme su una tela e quindi manipolando le forme facendo clic, trascinando e tenendo premuto. Le mie forme hanno il tipo di classe base di MindMapComponentInstance
e il mio canvas ha tipo Canvas
. L'oggetto Canvas
agisce come una sorta di controller, creando e memorizzando riferimenti a tutti gli oggetti MindMapComponentInstance
quando un utente cade sulla tela.
Ora ho bisogno di implementare la funzionalità degli eventi del mouse. Nello specifico, ho bisogno che l'oggetto Canvas
"guardi" o "ascolti" tutti gli eventi del mouse registrati sugli oggetti MindMapComponentInstance
. Quindi, fondamentalmente ho una quantità indefinita di editori (gli oggetti MindMapComponentInstance
) e un sottoscrittore (l'oggetto Canvas
).
Per rendere le cose leggermente più complicate, devo essere in grado di distinguere tra diversi tipi di eventi del mouse. Un clic, trascinamento, attesa, ecc. Devono essere tutti distinti dall'oggetto Canvas
, poiché deve agire in modo diverso a seconda del tipo di evento del mouse registrato dagli oggetti MindMapComponentInstance
.
Qual è il modo migliore per implementare ciò di cui ho bisogno? Il modello standard di osservatori sarà sufficiente? O dovrei fare le cose in modo leggermente diverso per ottenere una migliore progettazione del codice?
EDIT: Pensavo di aver menzionato che la mia applicazione è un'app Web e come tale viene scritta in javascript, se questo aiuta.