Pular para conteúdo

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

  1. Documentação completa das três categorias do GoF.
  2. Matriz decisória funcional orientando a escolha dos padrões.
  3. Exemplos práticos de uso e contraindicações de complexidade.