Pular para o conteúdo

Trilha de estudo

Trilha Padrões de Design: tudo o que estudar, tópico por tópico

Padrões de design e arquitetura de software

Resposta curta

Para aprender Padrões de Design, percorra 5 módulos e 24 tópicos na ordem em que um apoia o próximo. Comece por Padrões Criacionais e siga para Padrões Estruturais e Padrões Comportamentais. Use o mapa como checklist, ou meça seu nível e estude só o que falta.

5
módulos
24
tópicos
55
min para avaliar

O que você vai estudar

Os tópicos estão agrupados por módulo. Abra um para ver os objetivos e os conceitos-chave.

1 · Padrões Criacionais5 tópicos
  • Padrão Singleton

    Garantir que uma classe tenha apenas uma instância e fornecer um ponto de acesso global. Aborda questões de thread-safety, inicialização lazy vs. eager e os trade-offs de testabilidade.

    Objetivos

    • Implementar um Singleton thread-safe na sua linguagem principal
    • Argumentar quando o Singleton é apropriado e quando ele cria problemas

    Conceitos-chave

    • garantia de instância única
    • ponto de acesso global
    • inicialização thread-safe
    • inicialização lazy
    • inicialização eager
    • double-checked locking
    • questões de testabilidade
  • Padrão Factory Method

    Definir uma interface para criar objetos, mas deixando que as subclasses decidam quais classes instanciar. Promove baixo acoplamento e o princípio Aberto/Fechado.

    Objetivos

    • Implementar o Factory Method para desacoplar a criação de objetos do seu uso
    • Distinguir Factory Method de Simple Factory e Abstract Factory

    Conceitos-chave

    • classe criadora
    • criador concreto
    • interface de produto
    • produto concreto
    • princípio Aberto/Fechado
    • responsabilidade da subclasse
    • baixo acoplamento
  • Padrão Abstract Factory

    Fornecer uma interface para criar famílias de objetos relacionados sem especificar suas classes concretas. Útil para componentes de UI independentes de plataforma e famílias de produtos.

    Objetivos

    • Projetar uma Abstract Factory para uma biblioteca de UI multiplataforma
    • Identificar quando a Abstract Factory agrega valor e quando o Factory Method é suficiente

    Conceitos-chave

    • família de produtos
    • interface de abstract factory
    • fábrica concreta
    • variantes de produto
    • consistência entre produtos
    • padrão kit
  • Padrão Builder

    Separar a construção de um objeto complexo de sua representação, permitindo que o mesmo processo de construção crie diferentes representações.

    Objetivos

    • Substituir um telescoping constructor por um Builder
    • Implementar um Builder fluente para um objeto de configuração complexo

    Conceitos-chave

    • construção passo a passo
    • classe diretora
    • builder concreto
    • interface fluente
    • objetos imutáveis
    • problema do telescoping constructor
    • encadeamento de métodos
  • Padrão Prototype

    Criar novos objetos copiando um objeto existente (o protótipo). Aborda a semântica de shallow copy vs. deep copy, registros de clones e implicações de desempenho.

    Objetivos

    • Implementar corretamente deep copy para um grafo de objetos
    • Escolher entre shallow copy e deep copy com base nos relacionamentos entre objetos

    Conceitos-chave

    • método clone
    • shallow copy
    • deep copy
    • registro de protótipos
    • construtor de cópia
    • clonagem baseada em serialização
    • semântica de cópia
2 · Padrões Estruturais7 tópicos
  • Padrão Adapter

    Converter a interface de uma classe em outra interface esperada pelos clientes. Aborda class adapters (herança) vs. object adapters (composição) e cenários de integração.

    Objetivos

    • Implementar um object Adapter para integrar uma biblioteca de terceiros
    • Escolher entre as abordagens de class adapter e object adapter, justificando a decisão

    Conceitos-chave

    • interface alvo
    • adaptee
    • class adapter
    • object adapter
    • incompatibilidade de interface
    • integração com sistemas legados
    • padrão wrapper
  • Padrão Bridge

    Desacoplar uma abstração de sua implementação para que ambas possam variar de forma independente. Evita a explosão combinatória de subclasses.

    Objetivos

    • Refatorar uma explosão de hierarquia de classes em uma estrutura Bridge
    • Explicar quando o Bridge supera hierarquias de herança profundas

    Conceitos-chave

    • hierarquia de abstração
    • hierarquia de implementação
    • desacoplamento
    • composição em vez de herança
    • dimensões ortogonais
    • independência de plataforma
  • Padrão Composite

    Compor objetos em estruturas de árvore para representar hierarquias parte-todo. Permite que os clientes tratem objetos individuais e composições de forma uniforme.

    Objetivos

    • Modelar um sistema de arquivos ou uma hierarquia de widgets de UI usando Composite
    • Implementar operações recursivas que funcionem de forma uniforme em folhas e compostos

    Conceitos-chave

    • interface de componente
    • nó folha
    • nó composto
    • estrutura de árvore
    • composição recursiva
    • tratamento uniforme
    • hierarquia parte-todo
  • Padrão Decorator

    Atribuir responsabilidades adicionais a um objeto de forma dinâmica. Fornece uma alternativa flexível à criação de subclasses para estender funcionalidades.

    Objetivos

    • Implementar uma cadeia de Decorators para aprimorar streams de E/S
    • Distinguir o Decorator da extensão baseada em herança

    Conceitos-chave

    • interface de componente
    • componente concreto
    • decorator base
    • decorator concreto
    • encapsulamento (wrapping)
    • extensão dinâmica
    • responsabilidade única
  • Padrão Facade

    Fornecer uma interface simplificada para um subsistema complexo. Reduz dependências de componentes internos e promove a Lei de Demeter.

    Objetivos

    • Projetar uma Facade sobre um subsistema complexo de codificação de vídeo
    • Identificar quando uma Facade reduz o acoplamento e quando ela apenas esconde complexidade necessária

    Conceitos-chave

    • interface simplificada
    • classes do subsistema
    • desacoplamento do cliente
    • Lei de Demeter
    • arquitetura em camadas
    • redução da superfície de API
  • Padrão Flyweight

    Usar compartilhamento para suportar de forma eficiente um grande número de objetos de granularidade fina. Separa o estado intrínseco (compartilhado) do estado extrínseco (específico do contexto).

    Objetivos

    • Separar estado intrínseco de estado extrínseco em um sistema de renderização de caracteres
    • Quantificar a economia de memória do Flyweight em comparação com a instanciação ingênua

    Conceitos-chave

    • estado intrínseco
    • estado extrínseco
    • fábrica de flyweights
    • compartilhamento de objetos
    • otimização de memória
    • imutabilidade
    • objetos de contexto
  • Padrão Proxy

    Fornecer um substituto ou representante para outro objeto. Aborda virtual proxies (carregamento lazy), protection proxies (controle de acesso) e remote proxies (RPC).

    Objetivos

    • Implementar um virtual proxy para carregamento lazy de um recurso custoso
    • Distinguir o Proxy do Decorator e do Adapter

    Conceitos-chave

    • virtual proxy
    • protection proxy
    • remote proxy
    • caching proxy
    • interface do subject
    • inicialização lazy
    • controle de acesso
3 · Padrões Comportamentais8 tópicos
  • Padrão Chain of Responsibility

    Passar requisições ao longo de uma cadeia de handlers, em que cada handler decide se processa a requisição ou a repassa para o próximo handler da cadeia.

    Objetivos

    • Construir um pipeline de logging ou middleware usando Chain of Responsibility
    • Decidir quando o CoR é preferível a cadeias explícitas de if-else

    Conceitos-chave

    • interface de handler
    • handler concreto
    • repasse de requisição
    • construção da cadeia
    • pipelines de middleware
    • desacoplamento entre remetente e receptor
  • Padrão Command

    Encapsular uma requisição como um objeto, viabilizando parametrização, enfileiramento, logging e operações de undo/redo.

    Objetivos

    • Implementar undo/redo usando o padrão Command
    • Usar o Command para desacoplar ações de UI da lógica de negócio

    Conceitos-chave

    • interface de command
    • command concreto
    • invoker
    • receiver
    • pilha de undo/redo
    • macro commands
    • fila de commands
    • encapsulamento de requisição
  • Padrão Observer

    Definir uma dependência um-para-muitos de modo que, quando um objeto muda de estado, todos os seus dependentes sejam notificados automaticamente. Base dos sistemas orientados a eventos.

    Objetivos

    • Implementar o Observer para um sistema de notificação de preços de ações
    • Identificar e corrigir cenários de vazamento de memória em observers

    Conceitos-chave

    • subject/publisher
    • observer/subscriber
    • notificação de eventos
    • baixo acoplamento
    • modelo push vs. pull
    • vazamentos de memória em observers
    • event bus
  • Padrão Strategy

    Definir uma família de algoritmos, encapsular cada um deles e torná-los intercambiáveis. Permite selecionar o algoritmo em tempo de execução sem alterar a classe de contexto.

    Objetivos

    • Substituir um dispatcher switch-case pelo padrão Strategy
    • Implementar ordenação ou processamento de pagamentos com strategies intercambiáveis

    Conceitos-chave

    • interface de strategy
    • strategy concreta
    • classe de contexto
    • substituição em tempo de execução
    • encapsulamento de algoritmo
    • funções de primeira classe como strategies
    • policy objects
  • Padrão Template Method

    Definir o esqueleto de um algoritmo em uma classe base, delegando algumas etapas às subclasses sem alterar a estrutura geral do algoritmo.

    Objetivos

    • Implementar um framework de parsing de dados usando Template Method
    • Comparar Template Method (herança) com Strategy (composição)

    Conceitos-chave

    • template method
    • operações primitivas
    • hook methods
    • princípio de Hollywood
    • operações abstratas
    • operações concretas
    • extensão baseada em herança
  • Padrão State

    Permitir que um objeto altere seu comportamento quando seu estado interno muda. O objeto parece mudar de classe.

    Objetivos

    • Modelar uma máquina de vendas ou um semáforo usando o padrão State
    • Refatorar uma classe repleta de condicionais em uma máquina de estados

    Conceitos-chave

    • interface de state
    • state concreto
    • objeto de contexto
    • transições de estado
    • máquina de estados finita
    • eliminação de flags de estado
    • encapsulamento de comportamento por estado
  • Padrão Mediator

    Definir um objeto que encapsula como um conjunto de objetos interage. Promove baixo acoplamento ao evitar que os objetos se refiram uns aos outros explicitamente.

    Objetivos

    • Substituir uma malha emaranhada de objetos por um Mediator
    • Identificar quando o Mediator cria um antipadrão God Object

    Conceitos-chave

    • interface de mediator
    • mediator concreto
    • objetos colegas
    • comunicação centralizada
    • redução de acoplamento
    • analogia da sala de chat
    • analogia do controle de tráfego aéreo
  • Padrão Iterator

    Fornecer uma forma de acessar sequencialmente os elementos de uma coleção sem expor sua representação interna.

    Objetivos

    • Implementar um Iterator customizado para percorrer uma árvore
    • Explicar a diferença entre iteradores internos e externos

    Conceitos-chave

    • interface de iterator
    • iterator concreto
    • interface de agregado
    • iteração interna vs. externa
    • avaliação lazy
    • posição do cursor
    • protocolos de iteração da linguagem
4 · Princípios SOLID3 tópicos
  • Princípios da Responsabilidade Única e Aberto/Fechado

    SRP: uma classe deve ter apenas um motivo para mudar. OCP: entidades de software devem estar abertas para extensão, mas fechadas para modificação. Fundamenta a maioria das aplicações de padrões.

    Objetivos

    • Dividir uma God Class em classes coesas com responsabilidade única
    • Aplicar o OCP adicionando comportamento por extensão em vez de modificação

    Conceitos-chave

    • um único motivo para mudar
    • coesão
    • separação de responsabilidades
    • aberto para extensão
    • fechado para modificação
    • arquitetura de plugins
    • abstração como ponto de extensão
  • Princípios da Substituição de Liskov e Segregação de Interface

    LSP: subtipos devem poder substituir seus tipos base. ISP: clientes não devem ser forçados a depender de interfaces que não utilizam.

    Objetivos

    • Identificar e corrigir uma violação do LSP em uma hierarquia de herança
    • Decompor uma fat interface em interfaces específicas de papel

    Conceitos-chave

    • subtipagem comportamental
    • preservação de contrato
    • substituibilidade
    • interface inchada (fat interface)
    • interfaces de papel (role interfaces)
    • poluição de interface
    • regras de pré-condição/pós-condição
  • Princípio da Inversão de Dependência

    Módulos de alto nível não devem depender de módulos de baixo nível — ambos devem depender de abstrações. Viabiliza diretamente a injeção de dependência e arquiteturas testáveis.

    Objetivos

    • Refatorar uma classe fortemente acoplada para depender de abstrações
    • Implementar injeção por construtor e explicar os benefícios para a testabilidade

    Conceitos-chave

    • módulo de alto nível
    • módulo de baixo nível
    • dependência de abstração
    • injeção de dependência
    • container de IoC
    • injeção por construtor
    • testabilidade
5 · Antipadrões e Seleção de Padrões1 tópico
  • Seleção de Padrões e Antipadrões

    Saber quando NÃO usar um padrão. Aborda engenharia excessiva, abstração prematura, obsessão por padrões e aplicações incorretas comuns, como abuso do Singleton e uso inadequado do Visitor.

    Objetivos

    • Reconhecer e remover complexidade desnecessária de padrões em uma base de código
    • Justificar quando uma função simples ou estrutura de dados supera um padrão

    Conceitos-chave

    • engenharia excessiva
    • abstração prematura
    • abuso do Singleton
    • custo de complexidade do Visitor
    • Mediator como God Object
    • complexidade acidental
    • princípio YAGNI
    • custo-benefício dos padrões

Níveis: Júnior, Pleno, Sênior e Especialista

Explique com suas palavras

Corrigido por IA · sem cadastro · 1 pergunta

Sem alternativas para chutar: você escreve, a IA corrige com a rubrica do tópico e diz em que nível sua resposta está.

0 / 600

Já estuda Padrões de Design?

A avaliação mede tópico por tópico, e o plano pula o que você já sabe.

Aberto para ler. A conta só é necessária para ser medido.

Perguntas frequentes

Por onde começar a estudar Padrões de Design?

Comece por Padrões Criacionais: Padrão Singleton, Padrão Factory Method e Padrão Abstract Factory. O mapa ordena os tópicos pelo que depende de quê, então cada um prepara o seguinte.

Quanto tempo leva uma avaliação completa de Padrões de Design?

Uma avaliação completa desta trilha leva cerca de 55 minutos. O tempo de estudo depende de onde você começa; o diagnóstico mostra quais tópicos você pode pular.

Preciso de conta para usar esta página?

Não. O mapa, os objetivos e os conceitos-chave são abertos. A conta só é necessária para ser medido, ver seu gap por tópico e receber um plano.