У меня есть интерфейс
public interface Enricher {
Mono<MyObject> enrich(MyObject obj);
}
У меня есть реализации этого интерфейса, который возвращает обновленный MyObject.
У меня есть еще одна реализация под названием CompositeEnricher , которая принимает список of Enricher в конструкторе и выполняет обогащение.
В нереактивном мире я напишу что-то вроде этого
/*
Please note that following code is applicable only if Enricher interface returns MyObject instead of Mono<MyObject>
*/
public class CompositeEnricher implements Enricher {
private final List<Enricher> enrichers;
public CompositeEnricher(List<Enricher> enrichers) {
this.enrichers = enrichers;
}
@Override
public MyObject enrich(MyObject myObject) {
MyObject updated = myObject;
for(Enricher enricher : enrichers) {
updated = enricher.enrich(updated);
}
return updated;
}
}
Как мне изменить его на реактивный, чтобы каждая из реализаций Enricher return Mono, включая CompositeEnricher, который реализует интерфейс Enricher?