Dipendenza e disaccoppiamento dei componenti dell'applicazione

1

Nella mia applicazione client ho due componenti principali:

  • Core: wrapper che gestisce tutto ciò che riguarda l'esecuzione dell'applicazione vera e propria

  • NetworkClient: un livello che si occupa della comunicazione (ricezione / invio di pacchetti) con il server.

Ciò di cui non sono sicuro è il modo in cui NetworkClient deve fornire informazioni al processo principale dell'applicazione. Il processo principale ha una coda di eventi che viene eseguita nelle chiamate update (). La mia idea iniziale è di avere qualcosa del genere:

  1. NetworkClient riceve un'istantanea delle modifiche di stato
  2. Prende quella istantanea
  3. Riduce gli oggetti evento per il processo Core da gestire.

Il problema che vedo con questo, non è la classe NetworkClient troppo dipendente dalla classe Core? L'opposto non è un problema, tuttavia, poiché può esistere un client diverso (UDP, TCP, ecc.) Che funziona con la classe Core.

Quindi dal punto di vista del design, c'è un motivo per cui non vorrei che la classe NetworkClient fosse scritta per l'implementazione specifica della classe Core?

    
posta luleksde 14.01.2015 - 12:26
fonte

1 risposta

1

Scrivere una NetworkClient appositamente per la classe Core causa una dipendenza.

In alternativa puoi creare un livello di integrazione che astrae l'interazione tra i due. Per ragioni, chiamalo Servizio . Service non è implementato in Core o NetworkClient . In genere Service ha la conoscenza del trasporto di una risorsa (ad es. Qualche stato) da un luogo a un altro, utilizzando un meccanismo specifico (ad es. Database, rete, ecc.) - "Conosco un ragazzo che può farlo per te ". Il Core è liberamente accoppiato a Service sottoscrivendo gli eventi che emette. D'altra parte, NetworkClient implementa il mezzo di trasporto di alcuni "stati" da un luogo a un altro, in particolare su una rete. Il Service dipende da NetworkClient per raggiungere questo obiettivo.

    
risposta data 14.01.2015 - 14:46
fonte