Projeto 09: Catálogo GoF e Mapeamento de Padrões de Projeto 📚
Escopo do Projeto
Objetivo: Classificar os 23 padrões de projeto do Gang of Four (GoF) em suas três categorias fundamentais (Criacionais, Estruturais e Comportamentais) e identificar a aplicação ideal de cada padrão frente a problemas reais de arquitetura.
🎯 1. Contexto & Desafio Prático
Padrões de projeto são soluções comprovadas para problemas recorrentes de design de software. Você estruturará um catálogo interativo de consulta arquitetural documentando o problema, a solução canônica e os trade-offs de complexidade de cada padrão.
📋 2. Requisitos Técnicos Obrigatórios
- R1 (Mapeamento das 3 Famílias): Classificar e documentar os 23 padrões divididos em Criacionais (5), Estruturais (7) e Comportamentais (11).
- R2 (Análise de Problema vs Solução): Para cada padrão essencial (Singleton, Factory, Adapter, Decorator, Observer, Strategy), descrever o cenário exato em que ele deve ser aplicado.
- R3 (Trade-offs e Overengineering): Documentar quando NÃO utilizar cada padrão para evitar complexidade acidental desnecessária.
- R4 (Matriz Decisória Interativa): Construir um CLI ou script que recebe o problema arquitetural e recomenda o padrão GoF apropriado.
📐 3. Diagrama Conceitual & Arquitetura
graph TD
Catalog["Catálogo GoF (23 Padrões de Projeto)"] --> Cat1["Criacionais: Criação de Objetos com Baixo Acoplamento"]
Catalog --> Cat2["Estruturais: Composição e Montagem de Classes"]
Catalog --> Cat3["Comportamentais: Comunicação e Fluxo entre Objetos"]
Cat1 --> Ex1["Factory, Builder, Singleton"]
Cat2 --> Ex2["Adapter, Decorator, Facade"]
Cat3 --> Ex3["Strategy, Observer, Command"]
style Catalog fill:#e1f5fe,stroke:#01579b
style Cat1 fill:#fff3e0,stroke:#e65100
style Cat2 fill:#f3e5f5,stroke:#7b1fa2
style Cat3 fill:#e8f5e9,stroke:#2e7d32 💻 4. Especificação Técnica & Código de Referência
// gof_advisor.py
GOF_CATALOG = {
"troca_algoritmo": ("Strategy", "Permite alternar famílias de algoritmos em tempo de execução de forma intercambiável."),
"notificacao_multipla": ("Observer", "Define dependência um-para-muitos notificando múltiplos ouvintes sobre eventos."),
"compatibilidade_interface": ("Adapter", "Converte a interface de uma classe na interface esperada pelo cliente."),
"construcao_passo_a_passo": ("Builder", "Separa a construção de um objeto complexo da sua representação.")
}
def recomendar_padrao(necessidade: str):
padrao, desc = GOF_CATALOG.get(necessidade, ("Desconhecido", "Consulte o catálogo detalhado"))
print(f"Recomendação de Padrão: {padrao}\nJustificativa: {desc}")
📦 5. Critérios de Avaliação e Entrega
- Documentação completa das três categorias do GoF.
- Matriz decisória funcional orientando a escolha dos padrões.
- Exemplos práticos de uso e contraindicações de complexidade.