Guida alla progettazione con processo parallelo

3

Sto rielaborando un codice e un problema con il recupero dei dati da due processi paralleli.

Ho un'applicazione che invia i pacchetti avanti e indietro tramite mezzi diversi (es: RS232, TCP / IP, ecc.). Il jist di questa domanda è che ci sono due processi paralleli in corso.

Spero che l'immagine qui sotto mostri cosa sta succedendo meglio di quanto non possa dire:

La classe SetupRS232 () crea una nuova istanza di SerialPort di:

SerialPort serialPort = new SerialPort();

La mia domanda è, qual è il modo migliore in cui la classe Communicator (), che invia il pacchetto tramite il rispettivo supporto, ottiene l'accesso all'oggetto SerialPort dalla classe SetupRS232? Posso farlo con un Singleton, ma ho sentito che generalmente non sono il miglior progetto da seguire.

Sto cercando di seguire SRP ma mi sento come se stessi facendo qualcosa di sbagliato qui. Communicator () dovrà uscire dal suo modo di accedere a SetupRS232 () per ottenere l'accesso alla classe SerialPort. In realtà non ho ancora trovato il modo di accedervi.

Progettare ciascuna classe media, ad esempio SetupRS232 (), SetupTCPIP, come singleton, sarebbe il modo migliore per affrontare questo problema?

    
posta brazc0re 06.06.2012 - 23:34
fonte

2 risposte

3

Penso che lo schema che stai cercando sia un adattatore

È possibile implementare un'interfaccia ICommunicator per effettuare un pattern Adapter in modo che il processo di Communicator non abbia bisogno di sapere che tipo di meccanismo di trasporto sta usando

la creazione di porte e socket et al sarebbe responsabilità di un oggetto / processo di configurazione, non di Communicator

cioè, se ho capito bene la tua domanda!

    
risposta data 07.06.2012 - 01:12
fonte
0

La differenza tra un singleton e un oggetto creato solo una volta è che un singleton lo applica. Nel tuo caso, non penso che tu abbia davvero bisogno di rafforzarlo. Tutto ciò di cui hai realmente bisogno è un posto in cui le tue classi di installazione registrino le istanze SerialPort e un modo per consentire a Communicator di accedere a quel registro. In questo modo, le classi di configurazione e Communicator vengono disaccoppiati in modo sicuro l'uno dall'altro. Quindi dovrai solo fare attenzione che il "registro" sia sicuro per i thread e che l'interazione con esso sia ben definita.

    
risposta data 06.06.2012 - 23:54
fonte

Leggi altre domande sui tag