Pular para o conteúdo

apps/service-design/template-method

172 · Padrões de Design de Serviço · ≈ 5 min de estudo

Template Method

A classe base define uma vez a ordem das etapas de um processo, e cada subclasse só implementa as etapas — nunca a ordem. Nenhum tipo de cliente consegue pular a validação do documento nem aprovar antes dela. Use quando o processo tem sequência fixa e só o comportamento de cada etapa muda por tipo.

passos
5
arquivos
4
testes
0
tecnologias
2
Lógica puraTypeScriptBun
Baixar cartão

Cenário

O banco digital abre conta para pessoa física e pessoa jurídica. O fluxo é o mesmo: conferir o formato do documento, validar os dígitos verificadores e calcular o limite inicial de crédito. Muda o que cada etapa faz: CPF ou CNPJ, e a regra de limite — 1,5× a renda para pessoa física (com renda mínima), 30% do faturamento para pessoa jurídica.

Planta

Fluxo
9/9
onboard - AbstractOnboardingdocumentFormatIsValidRecusado: formatotaxIdCheckDigitsAreValidRecusado: digito verificadorcreditLimitCentsmaior que zeroRecusado: rendaAprovado com limiteOnboardingIndividualCPF, 1,5x renda ate R$ 5.000OnboardingBusinessCNPJ, 30% do faturamentoate R$ 50.000naosimnaosimnaosimimplementa as etapasimplementa as etapas
9

9 passos — reproduza para seguir o fluxo

Como funciona

5 passos

Esqueleto fixo, passos sobrescritos.

Esconde cada passo: lembre antes de tocar para revelar.

  1. 01

    AbstractOnboarding.onboard() é o método template: chama as três etapas numa ordem fixa

  2. 02

    As etapas são protected abstract: contrato entre base e subclasse, fora da API pública

  3. 03

    A primeira etapa que falha encerra o fluxo com o motivo; as seguintes não rodam

  4. 04

    OnboardingIndividual e OnboardingBusiness implementam só as etapas: tamanho do documento, dígito verificador (módulo 11 da Receita Federal) e limite em centavos

  5. 05

    Um tipo de cliente novo é uma subclasse nova; a ordem continua sendo da base

Trade-offs

O que se ganha, o que se paga

3 vantagenscada ganho tem um preço3 custos

Vantagens

  • Ordem garantida: subclasse não pula nem reordena etapa

  • Subclasse escreve só o que varia

  • Tipo novo sem tocar nos existentes

Custos

  • Herança acopla a subclasse à estrutura da base

  • Etapa nova muda a base e todas as subclasses

  • Ordem não muda em runtime — aí, Strategy

apps/service-design/template-method

4 arquivos

src/

  • onboarding_customer.tsClasse base com o método template e as etapas abstratas
  • onboarding_individual.tsPessoa física: CPF e limite por renda
  • onboarding_business.tsPessoa jurídica: CNPJ e limite por faturamento
  • document_tax_id.tsDígitos verificadores de CPF e CNPJ

Executar · só Bun

  1. bun install# dependências
  2. bun run demo# roda o cenário
  3. bun run test# testes unitários
Requisitos
Bun

Por que se relacionam

Teste rápido

Qual destes combina com Template Method?

Próximo projeto · Front-endAstro SSR em Bun
Esc

↑ ↓ navegarEnter abrir191 resultados