Pular para o conteúdo

Padrões de projeto (Design Patterns)

Prioridade Alta 18 min de leitura Status: Não visto Lido Praticado Dominado

Do zero

Na construção civil, ninguém reinventa a escada a cada prédio: existem soluções conhecidas para problemas que se repetem. Em software também. Padrões de projeto são soluções reaproveitáveis para problemas comuns de projeto orientado a objetos, com nome, problema, solução e consequências.

O catálogo clássico é o do livro Design Patterns (1994), de Gamma, Helm, Johnson e Vlissides, a “Gangue dos Quatro” (GoF). São 23 padrões em três famílias, que respondem a três perguntas:

  • Criacionais: como criar objetos sem amarrar o código a uma classe específica? (5 padrões)
  • Estruturais: como encaixar classes e objetos para formar estruturas maiores? (7 padrões)
  • Comportamentais: como os objetos se comunicam e dividem responsabilidades? (11 padrões)

Muitos padrões têm uma analogia do dia a dia. O Adapter é o adaptador de tomada: faz duas peças incompatíveis conversarem. O Observer é a assinatura de um canal: quando sai algo novo, todos os assinantes são avisados. O Decorator é o sorvete com coberturas: você acrescenta extras sem trocar o sorvete.

Frase para guardar: criacional cria, estrutural encaixa, comportamental coordena.

Em 1 minuto

  • Criacionais (5): Abstract Factory, Builder, Factory Method, Prototype e Singleton.
  • Estruturais (7): Adapter, Bridge, Composite, Decorator, Facade, Flyweight e Proxy.
  • Comportamentais (11): Chain of Responsibility, Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template Method e Visitor.
  • Os mais cobrados: Singleton, Factory Method, Adapter, Facade, Decorator, Proxy, Observer e Strategy.

Exemplo concreto: o sistema de processos do Tribunal

Problema no sistema Padrão Como resolve
Deve existir um único objeto de configuração, acessível de qualquer ponto Singleton Construtor privado e um método que devolve sempre a mesma instância
Integrar com o sistema legado de protocolo, cuja interface é diferente da esperada Adapter Uma classe intermediária traduz as chamadas de uma interface para a outra
Quando um processo muda de situação, avisar o painel, o e-mail e o log Observer O processo mantém uma lista de observadores e notifica todos a cada mudança
O cálculo da multa muda conforme o tipo de infração Strategy Cada regra de cálculo é uma classe com a mesma interface, trocável em tempo de execução
Acrescentar criptografia e compressão ao envio de arquivos, combinando à vontade Decorator Objetos que embrulham o original e acrescentam comportamento, sem subclasses para cada combinação
Oferecer uma chamada simples (“autuar processo”) que esconde cinco subsistemas Facade Uma interface simplificada para um conjunto complexo
Carregar o documento pesado só quando alguém abrir Proxy Um substituto controla o acesso ao objeto real (carga sob demanda, cache, permissão)

Singleton em Java, como costuma aparecer na prova:

public class Configuracao {
    private static Configuracao instancia;      // a única instância

    private Configuracao() { }                  // ninguém de fora usa "new"

    public static synchronized Configuracao getInstancia() {
        if (instancia == null) {
            instancia = new Configuracao();
        }
        return instancia;
    }
}

Comparação: os padrões que mais se confundem

Par Diferença
Adapter × Facade Adapter converte uma interface em outra já esperada; Facade cria uma interface nova e mais simples para um subsistema inteiro
Decorator × Proxy Decorator acrescenta comportamento; Proxy controla o acesso ao objeto (mesma interface, papel de guardião)
Strategy × State Strategy: o cliente escolhe o algoritmo; State: o comportamento muda sozinho conforme o estado interno do objeto
Factory Method × Abstract Factory Factory Method: uma subclasse decide qual objeto criar; Abstract Factory: cria famílias de objetos relacionados
Template Method × Strategy Template Method usa herança (a subclasse redefine passos de um algoritmo fixo); Strategy usa composição (troca o algoritmo inteiro)
Composite Trata objetos individuais e grupos da mesma forma (pastas que contêm arquivos e outras pastas)
Command Transforma um pedido num objeto, permitindo fila, registro e desfazer
Builder Monta um objeto complexo passo a passo
Prototype Cria objetos clonando um modelo
Chain of Responsibility Passa o pedido por uma cadeia até alguém tratá-lo (aprovações em alçadas)
Iterator Percorre uma coleção sem expor a sua estrutura interna

Como a FCC cobra

A descrição de um problema e a pergunta “qual padrão resolve?”, ou a classificação de um padrão em criacional, estrutural ou comportamental.

  • Família de cada padrão (Singleton é criacional; Adapter, estrutural; Observer, comportamental).
  • Reconhecer o padrão pelo cenário.
  • Diferenças entre pares parecidos (Adapter × Facade, Decorator × Proxy, Strategy × State).
  • Estrutura do Singleton (construtor privado, método estático).

Pegadinhas

  • “O Singleton é um padrão estrutural.” Falso: é criacional.
  • “O Observer é um padrão estrutural.” Falso: é comportamental.
  • “Facade e Adapter são o mesmo padrão.” Falso: Adapter converte uma interface existente; Facade simplifica um subsistema.
  • “O Decorator acrescenta comportamento por herança.” Falso: por composição, embrulhando o objeto, o que evita uma subclasse por combinação.
  • “O GoF tem 23 padrões criacionais.” Falso: são 23 no total (5 criacionais, 7 estruturais e 11 comportamentais).

Explique com suas palavras

Explique a um colega iniciante o que é um padrão de projeto e dê dois exemplos com analogias do dia a dia, dizendo a família de cada um.

  1. Escreva sem olhar a lição, com frases curtas e um exemplo seu.
  2. Onde travar ou precisar de jargão, há uma lacuna: releia só essa parte.
  3. Compare com a explicação-modelo e reescreva o que faltou.

Fica salva neste navegador.

Comparar com uma explicação-modelo

Padrão de projeto é uma solução já testada para um problema que se repete no desenho de um software. Em vez de inventar do zero, o programador usa uma receita conhecida, e todos da equipe entendem pelo nome.

O Adapter é como o adaptador de tomada: o aparelho tem um plugue e a parede tem outro formato, e o adaptador faz os dois funcionarem juntos sem mudar nenhum deles. É estrutural, porque trata de encaixar peças. O Observer é como seguir um canal: quando sai um vídeo novo, todos os seguidores são avisados, sem que o canal precise conhecer os detalhes de cada seguidor: ele só guarda a lista e avisa todos. É comportamental, porque trata de como os objetos se comunicam.

Teste-se

Engenharia de Software · Padrões de projeto · Inédita, estilo FCC

Questão 1 de 3

No catálogo de padrões de projeto do GoF, os padrões Singleton, Adapter e Observer são classificados, respectivamente, como

Alternativas

A–E escolhem, Enter confirma. Botão direito ou Shift + letra risca.

Toque longo numa alternativa para riscá-la.

Engenharia de Software · Padrões de projeto · Inédita, estilo FCC

Questão 2 de 3

O novo sistema de processos precisa usar um componente legado de protocolo cuja interface é incompatível com a que o sistema espera. Sem alterar o componente legado, a equipe criou uma classe intermediária que recebe as chamadas no formato esperado e as converte para o formato do legado. Foi aplicado o padrão

Alternativas

A–E escolhem, Enter confirma. Botão direito ou Shift + letra risca.

Toque longo numa alternativa para riscá-la.

Engenharia de Software · Padrões de projeto · Inédita, estilo FCC

Questão 3 de 3

Quando um processo muda de situação, vários componentes precisam ser atualizados automaticamente: o painel de acompanhamento, o serviço de e-mail e o registro de auditoria. O processo não deve depender das classes concretas desses componentes. O padrão mais adequado é o

Alternativas

A–E escolhem, Enter confirma. Botão direito ou Shift + letra risca.

Toque longo numa alternativa para riscá-la.

Mais duas questões deste tópico estão em Questões.

Flashcards gerados

FrenteVerso
Singleton Criacional. Garante uma única instância da classe e um ponto de acesso global a ela. Exemplo: Construtor privado e método estático getInstancia().
Adapter × Facade Adapter converte uma interface em outra já esperada; Facade cria uma interface simples para um subsistema complexo.
Factory Method × Abstract Factory No Factory Method, uma subclasse decide qual objeto criar; a Abstract Factory cria famílias de objetos relacionados.
Composite Estrutural. Trata objetos individuais e composições da mesma forma, numa árvore parte-todo. Exemplo: Pastas que contêm arquivos e outras pastas.
Command Comportamental. Encapsula um pedido num objeto, permitindo fila, registro e desfazer.

Ligação com o estudo de caso

Num caso de integração com sistemas legados de prefeituras, o Adapter é a resposta natural (“uma camada de adaptação converte o formato de cada prefeitura para o formato da API do Tribunal”). Para notificações de mudança de situação, cite o Observer, ou a versão distribuída dele, a arquitetura orientada a eventos.

Fontes da lição

  • Edital nº 01/2026, Anexo II, Engenharia de Software (fontes/edital-01-2026.txt).
  • Erich Gamma, Richard Helm, Ralph Johnson e John Vlissides, Padrões de projeto: soluções reutilizáveis de software orientado a objetos (catálogo dos 23 padrões e suas famílias).

Claude explica

Tire dúvidas sobre este tema no Claude: o site copia o pedido com a lição e abre uma conversa nova, na sua conta. Confira na fonte qualquer fato de lei ou de norma.

Pratique fora do site

Faça questões da FCC sobre este tópico no QConcursos ou no Gran e registre aqui quantas fez: elas contam na meta da semana e no status do tópico.

Registrar questões feitas lá
Errei uma questão lá: criar flashcard