Scusate per il vago titolo, non potevo pensare a un modo per condensare la domanda.
Sto costruendo un'applicazione che verrà eseguita come servizio in background e raccoglierò a intermittenza i dati sul sistema su cui è in esecuzione. Una seconda applicazione per controller Android interrogherà il sistema su tcp / ip per le statistiche sul sistema.
Attualmente, il servizio in background ha una classe listener TCP che legge / scrive byte da un socket. Quando i dati vengono ricevuti, solleva un evento per notificare il servizio. Il servizio prende i byte, li alimenta in un parser di comandi per capire cosa viene richiesto e quindi passa il comando analizzato a una classe executer di comando. Quando il servizio riceve un comando "query statistics", dovrebbe restituire le statistiche tramite la connessione tcp / ip.
Attualmente, tutte queste classi sono completamente separate l'una dall'altra. Ma per il comando executer per restituire le statistiche, ovviamente avrà bisogno di accedere al socket in qualche modo. Per ragioni che non riesco ad articolare completamente, sembra errato che il comando executer abbia un riferimento diretto al socket. Sto cercando strategie e / o schemi di progettazione che posso utilizzare per restituire i dati tramite socket mantenendo le classi disaccoppiate, se possibile.
Spero che questo abbia senso, per favore fatemi sapere se posso includere qualsiasi informazione che renderebbe la domanda più facile da capire.