Ho sentito dire che ogni classe dovrebbe sempre essere solo responsabile di un singolo scopo, altrimenti dovresti riconsiderare il tuo design.
Quindi ecco le classi interessate:
- WebSocketController: fornisce l'interazione di base con un WebSocketServer, è osservabile (in SWIFT attraverso eventi e in Java attraverso un pattern di osservatore modificato)
- RaceDataFacade: fornisce metodi come registerForRaceEventsAtServer o registerForMeasurementsAtServer
- JsonParser: responsabile dell'analisi dei dati in arrivo in entità facili da usare.
La cosa ora è che voglio avere l'intera logica JSON in outsourcing (per essere in grado di analizzare altri file dal server alla fine).
Quindi ho implementato un metodo parseEntities all'interno del mio JsonParser :
- Determina quali dati sono stati ricevuti dal server (RaceEvents o Measurements)
- Analizza una raccolta
- Restituisce una raccolta di tipo Entità (superclasse reciproca)
In RaceDataFacade determina se la raccolta è di tipo RaceEvent o Misura e chiama onRaceEventsUpdated rispettivamente onMeasurementsUpdated .
Soprattutto in SWIFT le conversioni di tipo sono un po 'difficili da fare, ma alla fine funzionano. È un buon design, o dovrei cambiarlo in qualche modo?