Open-Closed Principle: Exemplo Restaurante
Sistema de restaurante quebra quando adiciona novo prato? OCP resolve isso sem modificar código existente. Matemática severa da extensibilidade.
Por que isso é importante
Open-Closed Principle: Exemplo Restaurante. Sistema de restaurante quebra quando adiciona novo prato? OCP resolve isso sem modificar código existente. Matemática severa da extensibilidade.
Atenção
Sistema de restaurante que quebra a cada novo prato custa R$ 15K+ mensais em bugs.
Desenvolvedor sênior ganha 40% mais dominando OCP vs júnior que modifica código
existente.
Você adiciona um novo prato no cardápio e o sistema inteiro quebra. Modifica desconto de
pizza e hambúrguer para de funcionar. Open-Closed Principle resolve essa matemática
venenosa da extensibilidade.
Problema Real: Sistema Frágil
Restaurante precisa calcular preços diferentes por tipo de prato. Pizza tem taxa de
forno, hambúrguer tem desconto horário, salada tem adicional orgânico.
Checklist
- 1 Novo prato = modificar função existente
- 2 Mudança em pizza pode quebrar hambúrguer
- 3 Testes quebram constantemente
Open-Closed Principle: Definição Precisa
Atenção
Módulo deve estar aberto para extensão, mas fechado para modificação.
Traduzindo: você adiciona funcionalidade nova sem alterar código que já funciona.
Checklist
- ✅ Aberto para Extensão Pode adicionar novo comportamento facilmente
- 🔒 Fechado para Modificação Não altera código fonte existente
Solução: Polimorfismo Estratégico
Orientação a objetos com herança resolve a matemática da extensibilidade. Cada tipo de
prato vira uma classe independente.
Extensão Sem Modificação
Restaurante decide adicionar sobremesas no cardápio. Com OCP, você não toca em pizza nem
hambúrguer.
Checklist
- ✓ Zero modificação em Pizza e Hambúrguer
- ✓ Testes antigos continuam passando
- ✓ Sistema mais estável e confiável
Uso Prático do Sistema
Vantagens Técnicas Severas
Checklist
- 🧪 Testabilidade Cada classe testada isoladamente sem interferência
- 🔧 Manutenibilidade Bug em pizza não afeta hambúrguer
- 📈 Escalabilidade Adicionar 50 tipos novos sem risco
- ⚡ Performance Polimorfismo otimizado pela JIT
Casos de Uso Avançados
OCP não se limita a cálculo de preços. Aplicação se estende para qualquer comportamento
extensível.
Checklist
- 1 Sistemas de pagamento: PIX, cartão, boleto
- 2 Notificações: email, SMS, push, WhatsApp
- 3 Validações: CPF, CNPJ, email, telefone
Implementação Step-by-Step
Checklist
- 1 Identifique variação de comportamento Onde você tem if/else ou switch extensos
- 2 Crie classe abstrata base Defina contrato comum com métodos abstratos
- 3 Implemente classes concretas Uma para cada variação de comportamento
- 4 Use polimorfismo no cliente Trabalhe com tipo abstrato, não implementações
- 5 Teste extensibilidade Adicione nova implementação sem modificar existente
Checklist
- ✓ Sistema extensível sem modificação
- ✓ Polimorfismo implementado corretamente
- ✓ Testes unitários isolados
- ✓ Abstração estável definida
- ✓ Baixo acoplamento entre classes
- ✓ Performance mantida com herança
Próximos Passos
OCP é apenas um dos 5 princípios SOLID. Domine todos para escrever código que escala sem
quebrar.
Checklist
- 📚 Estude os Outros Princípios Single Responsibility, Liskov Substitution, Interface Segregation, Dependency
Inversion - 🛠️ Pratique com Projetos Reais Implemente em sistema de e-commerce, blog, API REST