Aula 13: Padrões Comportamentais 🧠
🎯 Objetivos da Aula
- [x] Compreender os padrões Strategy, Observer, Command e Template Method.
- [x] Aprender a encapsular algoritmos trocáveis.
- [x] Implementar comunicação de "um-para-muitos" desacoplada.
- [x] Padronizar passos de um algoritmo mantendo partes flexíveis.
💡 O que são Padrões Comportamentais?
Eles se preocupam com algoritmos e a atribuição de responsabilidades entre objetos. Eles não descrevem apenas padrões de objetos ou classes, mas também os padrões de comunicação entre eles.
🧱 Destaques Comportamentais
1. Strategy (Estratégia) 🎯
Define uma família de algoritmos, encapsula cada um deles e os torna intercambiáveis em tempo de execução. Exemplo: Diferentes formas de cálculo de frete ou desconto.
2. Observer (Observador) 🔔
Define uma dependência um-para-muitos entre objetos, de modo que quando um objeto muda de estado, todos os seus dependentes são notificados. Exemplo: Newsletter, Notificações de ações na bolsa.
3. Template Method 📝
Define o esqueleto de um algoritmo em uma operação, deixando alguns passos para as subclasses.
📊 Sequência: Observer
sequenceDiagram
participant S as Assunto (Subject)
participant O1 as Observador A
participant O2 as Observador B
S->>O1: Notificar Mudança
S->>O2: Notificar Mudança
O1->>S: Reagir/Atualizar
O2->>S: Reagir/Atualizar
💻 Exemplo: Strategy em Python
class FreteEstrategia:
def calcular(self, valor): pass
class FreteExpresso(FreteEstrategia):
def calcular(self, valor): return valor * 0.1
class FreteNormal(FreteEstrategia):
def calcular(self, valor): return valor * 0.05
class CalculadoraDeFrete:
def calcular(self, valor, estrategia):
return estrategia.calcular(valor)
calc = CalculadoraDeFrete()
print(calc.calcular(100, FreteExpresso()))
🧠 Blocos de Destaque
Command
Encapsula uma solicitação como um objeto, permitindo parametrizar clientes com diferentes solicitações e suportar operações que podem ser desfeitas (Undo).
Dica
O padrão Strategy ajuda a eliminar grandes blocos de if/else ou switch relacionados a regras de negócio que mudam frequentemente.
🚀 Mini-projeto: Sistema de Eventos
Implemente o padrão Observer para um sistema de notícias onde múltiplos assinantes (E-mail, SMS, Webhook) recebem atualizações quando uma nova notícia é publicada.
🎯 Próximos Passos
-
Slides
-
Quiz
-
Exercícios
-
Projeto