Então, eu estava pensando em quão monolíticas minhas aulas ficam a maior parte do tempo. Por exemplo, no método Character
da classe Jump
, pode-se ter uma referência a um objeto de efeito sonoro e tocá-lo. Por si só, isso é bom, mas quando a física, a animação, a colisão etc. são levadas em consideração, o método Jump se torna imenso e a Character
classe tem muitas dependências para muitas coisas diferentes. Ainda assim, isso pode ser bom. No entanto, e se não quisermos mais tocar um som quando o personagem pular? Agora, temos que encontrar essa linha específica de código na bagunça confusa do Jump
código e comentar ou algo assim.
Então .. eu estava pensando ..
E se, em vez disso, houvesse algum tipo de AudioSystem
classe e tudo o que ele fizesse fosse se inscrever em eventos aleatórios nos quais ela se interessa por outras classes. Por exemplo, a Character
classe pode ter um Jumped
evento (também estático, suponho) que é gerado dentro da Character
classe no método Então, a Character
classe não saberia nada sobre o pequeno efeito sonoro que é reproduzido quando o personagem pula. A AudioSystem
seria apenas uma enorme classe que o programador poderia retirar-se para ligar efeitos sonoros com certos eventos que acontecem no jogo através do uso de eventos estáticos. Então, se ele ficou muito grande que poderia ser separados em subclasses, como EffectsAudioSystem
, BackgroundAudioSystem
, AmbientAudioSystem
, et cetera.
Então, nas opções do jogo, pode-se ter uma caixa de seleção para ativar ou desativar esse tipo de som e tudo o que precisa ser feito é apenas desativar esse sistema com uma bandeira booleana simples e única. Essa idéia de sistemas também pode ser estendida a coisas como física, animações etc. até o ponto em que a maioria das respostas ao jogo resultantes das ações dos jogadores são conectadas por esses sistemas elaborados e dissociados.
Ok, então minha pergunta pode ser um pouco vaga, mas como isso soa? Eu realmente nunca ouvi falar de muito tipo de conversa sobre esse tipo de sistema. Isso está na minha cabeça agora, sem qualquer codificação feita até agora, talvez seja um daqueles acordos "bons em teoria, mas não na prática". Esse tipo de sistema funcionaria com um jogo maior ou acabaria quebrando e se tornando ainda mais uma bagunça de espaguete do que o sistema original?