Padrões de desenho

Os dez padrões do programa, escolhidos pelo problema e pelas suas consequências.

TLDR

Perguntar sobre esta página

ChatGPTClaudePerplexityGrokGeminiCopiar e abrirDeepSeekCopiar e abrir

Por problema, não por nome

Padrão é colaboração com problema e custo. Identifica cliente, decisão que varia e contrato antes do nome.

VariaçãoPadrão e decisão
Algoritmo escolhidoStrategy: contexto delega na estratégia; configuração escolhe.
Reação pelo ciclo de vidaState: estado atual decide e transita; enumeração com condições pode chegar.
Pedido guardado ou enfileiradoCommand: invocador chama o objeto pedido; undo guarda estado anterior e política.

Três ticks com pausa no meio dão dois avanços. Undo de +3 limitado de 3 para 4 repõe 3, não aplica -3. Efeitos externos podem não ter inverso.

Notificações e árvores

Observer: sujeito notifica inscritos pelo contrato, sem conhecer classes concretas. Altera para estado válido, depois notifica. Push envia o valor, pull deixa consultar.

Contrato fixa subscrição, remoção e falha de callbacks. Com cópia da lista, quem sai durante a notificação recebe a atual mas não a seguinte. Subscrição esquecida retém objetos e eventos.

Composite: folhas e grupos pela mesma interface. No grupo de inimigos do exemplo, o grupo interior soma os soldados de força 2 e 7 e dá 9; o grupo exterior soma o soldado de força 4 com o interior e dá 13; um grupo vazio dá 0. Acrescentar filhos pode ficar só no grupo. Partilha conta repetido; ciclos exigem regras. Não é a posse da composição UML.

Criação e embrulho

  • Factory Method: subclasses do criador redefinem a criação. Guerreiro dá espada, Mago dá feitiço; atacar() não escolhe classes. switch estático não é esta colaboração. Não chames redefiníveis no construtor da base.
  • Abstract Factory: objeto fábrica dá a família. Trocar Medieval por Espacial troca inimigo e arma sem tocar o cliente. Família nova é outra fábrica; produto novo (criarEscudo) muda o contrato e todas as fábricas.
  • Adapter traduz interface existente; Decorator envolve conservando a interface e somando comportamento. Adapter de 12 euros dá 1200; entrega de 250 dá 1450. Ordem importa: desconto de 10% e entrega de 200 dão 1100 ou 1080 conforme a ordem.
  • Cadeia que consulta a base em cada chamada acompanha mudanças (1000 dá 1080, 600 dá 720); snapshot no construtor congela. Delegar não é notificar a vista.
  • Singleton: criação antecipada protege a instância, não campos mutáveis nem isolamento de testes. Configuração única monta-se uma vez e injeta-se.

Participantes e programas completos.

À tua maneira

Aparência

Modo de cor
Tema
Cor de destaque

Leitura

Fonte de leitura

Álgebra, lógica e uma ideia de cada vez.

Código

Fonte do código

Navegação

Cursor de leitura, sem edição. h, j, k, l movem; / pesquisa nesta página. v seleciona caracteres; V seleciona linhas; y copia. Tab permite destacar ou comentar. Espaço ou Enter abre blocos recolhíveis. Nos cartões, h, j, k, l mudam o foco.

CSS personalizado

Ativa uma sugestão ou guarda o teu CSS. Só muda este navegador.

Usa --page, --text e --accent para acompanhar o tema.

Seletores e recuperação

.site-header, .prose, .course-card, [data-reading-history], [data-playground] e .page-actions.

Abre a aparência com a tecla vírgula ou no rodapé. Se o CSS esconder os controlos, abre esta página sem CSS personalizado.

Pesquisar

Escreve para pesquisar em todo o site.

para escolher · Enter para abrir · Esc para fechar

Copiar fórmula

A cópia automática não está disponível. Copia o LaTeX abaixo.

Pesquisar nesta página

Enter procura · n / N repetem · Esc cancela. Ctrl / Cmd K pesquisa todo o site.

Atalhos de teclado

Clica numa tecla para a mudar. Esc cancela. Backspace desativa.

PesquisarCtrl / Cmd K

Os atalhos não interferem enquanto escreves. Tab e Enter funcionam sempre.