Czy interfejs repozytorium powinienen zwracać wartość już opakowaną w np. Mono czy powinno zwrócić czystego usera?
interface TestRepository {
User load(String name);
}
interface TestRepository {
Mono<User> load(String name); // albo CompletableFuture<User> czy cokolwiek w tym stylu
}
Przykładowe implementacje
class MongoTestRepository implements TestRepository {
private final Mongo mongo;
Mono<User> load(String name) {
return mongo.findOne(name); //zwraca od razu mono
}
}
class InMemoryTestRepository implements TestRepository {
private final Map<String, User> users;
Mono<User> load(String name) {
return Mono.just(users.get(name));
}
}
Tylko teraz gdy mam reaktywnego drivera od mongo nie widze sensu żeby te dane odpakować, żeby znowu za chwile je zapakować.
Czyli powinienem nawet implementacje InMemory opakowywać w Mono?