🚀 Capítulo 20: Projeto Final: O Grande Arquiteto (Tema: Caverna do Dragão)
NOTE
Este capítulo utiliza a temática de Caverna do Dragão para o Projeto Final. O Mestre dos Magos deixou um enigma de arquitetura; os heróis precisam aplicar os padrões corretos para finalmente voltar para casa!
1. 🎯 Objetivo da Aula
Integrar os conceitos de Paradigmas de Programação e Padrões de Projeto aprendidos durante o curso para resolver um grande desafio de arquitetura de software.
2. 🏢 O Cenário Prático (Seu Desafio)
Os heróis (Hank, Eric, Diana, Sheila, Presto e Bobby) encontraram um portal que promete levá-los de volta para o parque de diversões. Porém, o portal está trancado pelo Labirinto dos Padrões, criado pelo Vingador. Para abrir o portal, eles precisam resolver 4 desafios de design de código, escolhendo o padrão de projeto correto para cada situação.
🧩 Os Desafios do Labirinto:
- O Desafio da Fonte de Luz Única: O labirinto é escuro. Eles precisam de um objeto
OrbeDeLuz. O Vingador colocou uma maldição: se eles tentarem criar mais de um Orbe, todos se apagam. Como garantir que exista apenas uma instância do Orbe no sistema inteiro? - O Desafio do Chapéu do Presto: O Presto quer usar seu chapéu mágico para criar uma ponte. O chapéu espera receber uma “Fórmula Mágica” (uma interface antiga), mas os heróis só têm um “Livro de Engenharia” (uma interface nova). Como fazer o chapéu aceitar o livro?
- O Desafio do Escudo do Eric: O Eric fica com muito medo. Quando ele está calmo, seu escudo reflete ataques. Quando ele está em pânico, ele apenas se esconde atrás do escudo e não consegue se mover. O comportamento do objeto
Escudomuda dependendo do estado emocional do Eric. Como modelar isso sem usar dezenas deif/else? - O Desafio do Ataque Combinado: O Hank quer dar um comando para que todos ataquem ao mesmo tempo. Ele não quer falar com cada um individualmente. Ele quer “gritar” uma ordem e que todos os que estiverem ouvindo executem suas ações. Qual padrão resolve isso?
Seu desafio é identificar e aplicar o padrão correto para cada um dos 4 desafios!
3. 🧠 Fundamentos: A Teoria Traduzida
Este capítulo é uma revisão prática de tudo o que vimos:
- Criacionais: Singleton, Factory, Abstract Factory, Builder, Prototype.
- Estruturais: Adapter, Bridge, Composite, Decorator, Facade.
- Comportamentais: Observer, Strategy, State, Command.
Lembre-se: Não existe padrão melhor ou pior. Existe o padrão certo para o problema certo!
4. 📖 Exemplo Guiado: O Mapa do Labirinto
Vamos ajudar os heróis com o primeiro desafio (A Fonte de Luz Única).
Como precisamos de uma única instância global do OrbeDeLuz, o padrão perfeito é o Singleton.
class OrbeDeLuz {
constructor() {
if (OrbeDeLuz.instancia) {
return OrbeDeLuz.instancia;
}
this.brilho = "Forte";
OrbeDeLuz.instancia = this;
}
}5. 🛠️ Prática Obrigatória 1: Resolvendo os Desafios
Com base nos desafios 2, 3 e 4 descritos no cenário:
- Qual padrão de projeto resolve o Desafio do Chapéu do Presto?
- Qual padrão de projeto resolve o Desafio do Escudo do Eric?
- Qual padrão de projeto resolve o Desafio do Ataque Combinado do Hank?
6. 🛠️ Prática Obrigatória 2: O Paradigma da Fuga
Se os heróis decidirem programar o sistema do portal usando Programação Funcional, eles poderão usar classes e objetos para representar o Escudo do Eric? Por quê? O que eles deveriam usar no lugar?
7. 📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)
- Faça o Commit: No GitHub Desktop, digite a mensagem (ex:
Finaliza Capítulo 20 Paradigmas) e clique em Commit to main. - Envie para a Nuvem (Push): Clique em Push origin.
8. 📂 Estrutura de Pastas
mod_10_paradigmas_e_padroes_de_projeto/
├── capitulos/
│ ├── capitulo_20_projeto.md
│ └── codigos/
│ └── cap20/
│ └── portal_fuga.js9. 💡 Checkpoint de Lógica
Parabéns por chegar até aqui! Você agora possui as ferramentas mentais para criar arquiteturas de software profissionais, limpas e escaláveis.
10. 🔥 Desafio de Fixação
Crie um pequeno código em JavaScript simulando a solução de um dos desafios que você respondeu na Prática 1.
🔑 Gabarito de Código/Fórmulas
Gabarito da Prática 1:
- Adapter (Para adaptar a interface do livro para a interface que o chapéu espera).
- State (O comportamento do escudo muda dependendo do estado interno do Eric).
- Observer (O Hank é o sujeito que emite o comando, e os outros heróis são os observadores que reagem).