Projeto criado com Spring Boot a partir do Spring Initializr para demonstrar a aplicação de Design Patterns(Padrões de Projeto) clássicos em um sistema simples de agendamento e execução de tarefas.
- Java 17+
- Spring Boot 3.x
- Maven
- Lombok
Padrão | Descrição |
---|---|
Command | Encapsula ações como objetos, permitindo agendamento e execução desacoplada. |
Memento | Permite salvar/restaurar o estado anterior das tarefas, possibilitando o “desfazer”. |
Observer | Observadores são notificados automaticamente quando uma tarefa é executada. |
- ✅ Agendamento de tarefas via API
▶️ Execução de tarefas em ordem (fila FIFO)- ↩️ Desfazer a última execução com histórico
- 🔔 Observadores de execução: logs e simulação de notificação
- 🔧 API REST simples e fácil de testar
src/main/java/com/example/scheduler/
├── command/ # Padrão Command (ações encapsuladas)
│ ├── Command.java
│ ├── PrintMessageCommand.java
├── controller/ # Controlador REST
│ └── TaskController.java
├── dto/ # Data Transfer Objects
│ └── TaskRequest.java
├── memento/ # Padrão Memento (histórico)
│ ├── TaskMemento.java
│ └── TaskHistory.java
├── model/ # Modelo de domínio
│ └── Task.java
├── observer/ # Padrão Observer
│ ├── TaskObserver.java
│ ├── LoggingObserver.java
│ └── NotificationObserver.java
├── service/ # Serviço de agendamento e execução
│ └── TaskScheduler.java
└── SchedulerApplication.java
git clone https://github.com/alissonam/task-scheduler-patterns
cd task-scheduler-patterns
./mvnw spring-boot:run
A aplicação estará disponível em:
http://localhost:8080
curl -X POST http://localhost:8080/tasks \
-H "Content-Type: application/json" \
-d '{"id":"1","message":"Fazer deploy na sexta!!!"}'
curl -X POST http://localhost:8080/tasks/execute
curl -X POST http://localhost:8080/tasks/undo
Este projeto foi desenvolvido para fins didaticos com a intenção de aplicar design patterns em Java com Spring Boot.