Sto sviluppando un software per programmare un dispositivo.
Ho alcuni comandi come Reset
, Read_Version
, Read_memory
, Write_memory
, Erase_memory
.
Reset
e Read_Version
sono corretti. Non hanno bisogno di parametri.
Read_memory
e Erase_memory
hanno bisogno degli stessi parametri che sono Lunghezza e Indirizzo.
Write_memory
ha bisogno di lunghezza, indirizzo e dati.
Per ogni comando, ho gli stessi passi in sequenza, che sono qualcosa come questo sendCommand
, waitForResponse
, treatResponse
.
Ho difficoltà a identificare quale modello dovrei usare. Fabbrica, Metodo modello, Strategia o altro modello.
Modifica
Cercherò di spiegare meglio prendendo in considerazione i commenti e le risposte fornite.
Ho già fatto questo software e ora sto cercando di rifarlo. Sto provando a usare i pattern, anche se non è necessario perché sto sfruttando questo piccolo software per conoscere alcuni pattern. Nonostante io pensi che uno (o più) pattern si adatti qui e potrebbe migliorare il mio codice.
Quando voglio leggere la versione del software del mio dispositivo, non devo assemblare il comando con i parametri. È risolto. Quindi devo inviarlo. Dopo aver atteso la risposta. Se c'è una risposta, tratta (o analizza) e restituisce.
Per leggere una parte della memoria (massimo 256 byte), devo assemblare il comando usando i parametri Len
e Address
. Quindi devo inviarlo. Dopo aver atteso la risposta. Se c'è una risposta, tratta (o analizza) e restituisce.
Per scrivere una porzione in memoria (massimo 256 byte), devo assemblare il comando usando i parametri Len
, Address
e Data
. Quindi devo inviarlo. Dopo aver atteso la risposta. Se c'è una risposta, tratta (o analizza) e restituisce.
Penso che potrei usare Template Method perché ho quasi lo stesso algoritmo per tutti. Ma il problema è che alcuni comandi sono risolti, altri hanno 2 o 3 parametri.
Penso che i parametri dovrebbero essere passati al costruttore della classe. Ma ogni classe avrà un costruttore che sostituisce il costruttore astratto della classe. Questo è un problema per il metodo template? Dovrei usare altri pattern?