Como um exercício de aprendizado (não estou na escola - apenas um rapaz tentando aprender algo novo), estou tentando escrever uma simulação de porta lógica que incorpore atraso de propagação. O usuário também deve poder agrupar portas para criar objetos de nível superior.
Quero aplicar padrões de design ao meu problema, mas estou tendo dificuldades.
Estou lendo o Head First Design Patterns e vejo que o padrão Command é uma boa maneira de simular pulsos elétricos através de um circuito com atraso. Também vejo que o padrão Composite é uma boa maneira de simular unidades aninhadas. Só não sei como misturar os dois.
Em outras palavras, enquanto atravesso meus portões, vejo que o portão 'x' deve disparar. Ele tem um atraso de 15 nanossegundos, então eu crio um comando com um carimbo de data / hora de 15 ns do tempo atual do jogo. Onde está o expedidor? No exemplo do restaurante, com o comando "Order", a garçonete e o cozinheiro enviam o comando e têm a opção de introduzir um atraso. Se eu tenho um portão 'composto', ele também possui seu próprio despachante? Preciso usar um Singleton para gerenciar a fila?
Li o que pude encontrar, mas ainda preciso de um empurrão na direção certa: