Pular para o conteúdo

apps/patterns/factory-pattern

016 · Padrões Fundamentais · ≈ 5 min de estudo

Factory Pattern

Centraliza a decisão de qual classe concreta criar: o cliente pede um gateway ou um detector de fraude pelo nome e recebe só a interface. Aqui, cada produto é um cliente fino de um serviço Elysia real, chamado por fetch().

passos
6
arquivos
5
teste
1
tecnologias
3
Lógica puraTypeScriptBunElysia
Baixar cartão

Cenário

Um processador de pagamentos liquida por PIX, TED ou boleto e checa fraude por regra, modelo de ML ou abordagem híbrida. O tipo chega por configuração ou payload; sem fábrica, o cliente conheceria todas as classes concretas. Os rails (api_rails.ts, porta 7301) e o motor de scoring (api_fraud.ts, porta 7302) são processos Elysia separados.

Planta

Classes
6/6
«interface»InterfacePaymentGateway+name+process(amountCents, accountId)FactoryGatewayPayment+TYPES+create(type) InterfacePaymentGatewayGatewayPixGatewayTedGatewayBoleto«interface»InterfaceFraudDetector+name+analyze(amountCents)FactoryDetectorFraud+TYPES+create(type) InterfaceFraudDetectorDetectorFraudcriacria
6

6 passos — reproduza para seguir o fluxo

Como funciona

6 passos

Centraliza a criação do objeto certo.

Esconde cada passo: lembre antes de tocar para revelar.

  1. 01

    InterfacesInterfacePaymentGateway e InterfaceFraudDetector são tudo o que o cliente conhece

  2. 02

    Fábricascreate(type) escolhe a classe concreta num switch; nome desconhecido lança erro listando os disponíveis

  3. 03

    Configuração no produtoA URL do serviço é injetada na fábrica e repassada ao produto, sem estado estático

  4. 04

    ProdutosGatewayPix, GatewayTed, GatewayBoleto chamam a rota do próprio rail; DetectorFraud chama a estratégia de scoring

  5. 05

    Regra de cada produtoO PIX recusa acima do limite diário (R$ 20.000,00); cada estratégia marca fraude acima do próprio limiar

  6. 06

    Orquestraçãodemo.ts sobe os dois serviços com Bun.spawn, espera o /health e roda os cenários

apps/patterns/factory-pattern

5 arquivos

src/

  • factory_gateway.tsInterfaces, produtos e as fábricas FactoryGatewayPayment e FactoryDetectorFraud
  • api_rails.tsRails de pagamento (Elysia, porta 7301): /pix, /ted, /boleto
  • api_fraud.tsMotor de scoring (Elysia, porta 7302): /score/:strategy
  • demo.tsdemoSobe os serviços e liquida pagamentos escolhendo gateway e detector pelo nome
  • factory_gateway.test.tstesteMapeamento nome → classe, nome desconhecido e fronteira do limite PIX e dos limiares de fraude

Executar · só Bun

  1. bun install# dependências
  2. bun run demo# roda o cenário

Testes: bun run test.

Requisitos
Bun

Por que se relacionam

Teste rápido

Qual destes combina com Factory Pattern?

Próximo projeto · Padrões FundamentaisFallback Pattern
Esc

↑ ↓ navegarEnter abrir191 resultados