GLO-4002 - Site du cours 2023

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.