Article image
Vitor Garcia
Vitor Garcia07/08/2025 23:55
Compartilhe

Design Patterns, você conhece?

    Olá pessoal, tenho certeza que alguns de vocês já ouviram falar de Design Patterns, enquanto outros talvez ainda não. Por ser um assunto que pode parecer complicado, quero explicar de forma simples o que eles são.

    Design Patterns são soluções comuns para problemas que aparecem com frequência no desenvolvimento de software. Eles funcionam como um “guia” para organizar o código de maneira eficiente e reutilizável.

    Para facilitar, vamos imaginar um jogo 2D. Primeiro, pense no padrão Singleton como o inventário do jogador: existe apenas um inventário único que controla todos os itens que o player carrega. Ele precisa ser único para que as informações estejam sempre sincronizadas.

    Mas afinal, como aplicar isso na prática? Pensando no exemplo do inventário do jogador, aplicar o Singleton significa garantir que em todo o jogo exista apenas uma instância desse inventário, para que todas as partes do sistema possam acessar as mesmas informações atualizadas. Isso evita problemas como dados conflitantes ou múltiplos inventários separados, facilitando o controle e a organização do que o jogador tem, de forma centralizada e confiável.

    Já o Strategy pode ser comparado aos poderes dos inimigos. Cada inimigo pode ter uma estratégia diferente de ataque, e essa estratégia pode mudar conforme o contexto do jogo. O Strategy permite trocar esses comportamentos de forma fácil, sem alterar o inimigo em si.

    Esse padrão permite que você defina uma família de algoritmos ou comportamentos intercambiáveis e selecione qual usar em tempo de execução. No contexto do jogo, isso significa que cada inimigo pode ter diferentes formas de agir — por exemplo, atacar rápido, defender ou usar magias — sem que você precise criar várias classes específicas para cada comportamento. Em vez disso, você cria uma interface comum para esses comportamentos e troca a implementação conforme a necessidade, tornando o código mais flexível e fácil de estender ou modificar sem mexer nas classes principais dos inimigos.

    Por fim, o Factory é como a criação de vários itens no jogo. Quando o jogador pega um item, o Factory é quem decide qual tipo de item criar (arma, escudo), sem que o código precise conhecer detalhes de cada um.

    Esse padrão serve para centralizar a criação de objetos, especialmente quando você tem várias classes relacionadas que precisam ser instanciadas de forma flexível. No exemplo do jogo, quando o jogador coleta um item, o Factory decide qual tipo de item criar — como uma poção, uma arma ou um escudo — sem que o código que pede o item precise saber os detalhes de cada tipo. Isso facilita adicionar novos tipos de itens no futuro e mantém o código organizado, porque toda a lógica de criação fica concentrada em um lugar só.

    Assim, os Design Patterns ajudam a organizar e estruturar o código para que ele fique mais claro, flexível e fácil de manter.

    image

    Compartilhe
    Comentários (2)
    Vitor Garcia
    Vitor Garcia - 08/08/2025 16:45

    Obrigado, DIO Community!

    Aprendi sobre Design Patterns com um amigo meu que desenvolveu um jogo 2D usando Java nativo. No começo, ele programava sem se preocupar muito com arquitetura de código, mas chegou um momento em que qualquer mudança quebrava outras partes do jogo.Foi aí que ele começou a estudar Design Patterns.

    Depois, ele me ensinou alguns, e o que mais me marcou foi o Singleton. A importância de criar uma instância única dentro do jogo faz toda a diferença, especialmente para coisas como inventário, assets de imagem, assets de áudio e por aí vai. No caso dele, o problema era o inventário ficar duplicado em diferentes mapas.

    Ele resolveu isso criando um Singleton para o inventário, criando uma instância única compartilhada por todos os mapas. Além disso, ele usou o Factory para criar vários inimigos e o Strategy para definir os ataques deles, entre outros.

    Sem dúvida, Design Patterns são fundamentais para organizar e escalar o código!

    DIO Community
    DIO Community - 08/08/2025 09:28

    Vitor, excelente forma de explicar um tema que muitas vezes assusta quem está começando! Usar analogias com jogos 2D foi uma escolha certeira, acessível, visual e altamente didática. Você conseguiu traduzir padrões clássicos como Singleton, Strategy e Factory de maneira leve, mas com profundidade prática.

    Na DIO, acreditamos que ensinar com contexto transforma o aprendizado. Ao mostrar por que e quando usar cada padrão, você não só ensina o “como fazer”, mas desenvolve o pensamento crítico do dev, algo essencial para escrever código limpo e escalável em qualquer linguagem.

    Na sua opinião, qual foi o design pattern que mais te ajudou a “destravar” o entendimento sobre arquitetura de software na prática?