Ho letto più siti Web su questo argomento ma nessuno di questi mi ha fornito una soluzione "valida" per il problema che sto riscontrando. Il problema è descritto nelle seguenti domande (correlate):
- Come faccio ad accoppiare il pacchetto UI con il resto del sistema senza un eccessivo accoppiamento con le classi all'interno degli altri pacchetti (sto pensando al modello di facciata).
- Ho molte classi di istanze singole, ma non voglio usare il Pattern Singleton per forzare la singola istanza. In alcuni casi ho bisogno di accedere a quelle classi in altri pacchetti.
Vedere la figura seguente per una classe (semplificata) e un diagramma del pacchetto del sistema. Ho una classe ProtocolParser (non il vero nome) che analizza i dati in arrivo e genera eventi quando vengono ricevuti determinati pacchetti. Gli eventi sono gestiti da AnchorManager e TagManager . Quelle classi fanno quasi la stessa cosa. Quando l'evento viene ricevuto, cerca nella loro lista di Ancore o Tag se trova un Ancoraggio o Tag con lo stesso id lo aggiornano con nuovi dati altrimenti creano un nuovo Anchor o Tag . Ho anche classe TrackingDeviceManager questa classe è responsabile di mantenere un elenco di tutti TrackingDevices nel sistema (quindi, ad esempio, l'interfaccia utente può mostrarne una lista).
Non è molto utile avere più istanze delle classi TrackingDeviceManger , AnchorManager e TagManager poiché devono tenere traccia di tutte le TrackingDevices , Ancoraggi o Tag nel sistema. Quindi potrei potenzialmente renderli dei singleton. Ma non credo che il modello singleton sia il modo giusto per andare qui.
Quindi sto pensando di implementare TrackingFacade (singleton e una facciata) questa classe creerà istanze delle tre classi e le inizializzerà. Espone anche alcuni metodi ed eventi pubblici in modo che altre classi in altri pacchetti possano consumarli. Ma mi chiedo se questo è un buon approccio. O dovrei ripensare al mio design?