Als Lernübung (ich bin nicht in der Schule - nur ein alter Mann, der versucht, etwas Neues zu lernen) versuche ich, eine Logikgattersimulation zu schreiben, die eine Ausbreitungsverzögerung beinhaltet. Der Benutzer sollte auch in der Lage sein, Gates zu gruppieren, um übergeordnete Objekte zu erstellen.
Ich möchte Designmuster auf mein Problem anwenden, aber es fällt mir schwer.
Ich lese Head First Design Patterns und sehe, dass das Command Pattern eine gute Möglichkeit ist, elektrische Impulse durch einen Schaltkreis mit Verzögerung zu simulieren. Ich sehe auch, dass das zusammengesetzte Muster eine gute Möglichkeit ist, verschachtelte Einheiten zu simulieren. Ich weiß nur nicht, wie ich die beiden mischen soll.
Mit anderen Worten, wenn ich durch meine Tore gehe, sehe ich, dass das Tor 'x' feuern sollte. Es hat eine Verzögerung von 15 Nanosekunden, daher erstelle ich einen Befehl mit einem Zeitstempel von 15 ns ab der aktuellen Spielzeit. Wo ist der Dispatcher? Im Beispiel des Diner, wobei der Befehl die 'Bestellung' ist, senden die Kellnerin und der Koch jeweils den Befehl aus und haben die Möglichkeit, eine Verzögerung einzuführen. Wenn ich ein 'zusammengesetztes' Tor habe, hat es auch einen eigenen Dispatcher? Muss ich einen Singleton verwenden, um die Warteschlange zu verwalten?
Ich habe gelesen, was ich finden konnte, aber ich brauche noch einen Schub in die richtige Richtung: