Temps estimé: 20 minutes
Exercices préparatoires V
Mise en situation
Voici une petite application qui permet de créer et obtenir sa liste de todos:
package todo.ui;
public class TodoControlleur {
public void creerTodo(TodoDto todoDto) {
todoService.creerTodo(todoDto);
}
public List<TodoDto> listerTodos() {
return todoService.listerTodos();
}
}
package todo.service;
import todo.domain.Todo;
import todo.persistance.TodoRepository;
import todo.ui.TodoDto;
public class TodoService {
public void creerTodo(TodoDto todoDto) {
Todo todo = todoFactory.creer(todoDto);
todoRepository.sauvegarder(todo);
}
public List<TodoDto> listerTodos() {
List<Todo> todos = todoRepository.listerTous();
return todoAssembleur.assemblerDto(todos);
}
}
package todo.service;
import todo.domain.Todo;
import todo.ui.TodoDto;
public class TodoAssembleur {
public List<TodoDto> assemblerDto(List<Todo> todos) {
// ...
}
}
package todo.service;
import todo.domain.Todo;
import todo.ui.TodoDto;
public class TodoFactory {
public Todo creerTodo(TodoDto dto) {
// ...
}
}
package todo.persistance;
import todo.domain.Todo;
public interface TodoRepository {
public void sauvegarder(Todo todo);
public List<Todo> listerTous();
}
package todo.persistance;
import todo.domain.Todo;
public class InMemoryTodoRepository implements TodoRepository {
public void sauvegarder(Todo todo) {
// ...
}
public List<Todo> listerTous() {
// ...
}
}
Question 1
En dehors du fait que cette architecture est trop complexe et n'est pas adaptée au problème que l'on veut résoudre (gérer des todos), il y a des problèmes de dépendances. Faites un diagramme de packages et de classes et identifiez toutes les dépendances qui ne sont pas correct.
Question 2
En gardant les mêmes couches, faites un nouveau diagramme de packages et de classes en réorganisant les dépendances pour qu'elles respectent le DIP et le modèle hexagonal.