Come esercizio di apprendimento (non sono a scuola - solo un vecchio che cerca di imparare qualcosa di nuovo), sto provando a scrivere una simulazione di gate logico che incorpori il ritardo di propagazione. L'utente dovrebbe anche essere in grado di raggruppare i gate per creare oggetti di livello superiore.
Voglio applicare modelli di progettazione al mio problema, ma mi sto trovando in difficoltà.
Sto leggendo Head First Design Patterns e vedo che il pattern Command è un buon modo per simulare gli impulsi elettrici attraverso un circuito con un ritardo. Vedo anche che il pattern Composite è un buon modo per simulare le unità annidate. Non so come mescolare i due.
In altre parole, mentre cancello i miei cancelli, vedo che la porta 'x' dovrebbe sparare. Ha un ritardo di 15 nanosecondi, quindi creo un comando con un timestamp di 15 ns dal tempo di gioco corrente. Dov'è il supervisore? Nell'esempio del commensale, con il comando che è "Ordine", la cameriera e il cuoco spediscono il comando e hanno la possibilità di introdurre un ritardo. Se ho un gate "composito", ha anche un proprio dispatcher? Devo usare un Singleton per gestire la coda?
Ho letto quello che ho trovato, ma ho ancora bisogno di una spinta nella giusta direzione: