Назад к вопросам
СБЕР
Junior — Middle
67
Каким образом реализовать и использовать паттерн монада в своем коде?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Паттерн монада — это абстракция, которая позволяет оборачивать значения в контекст и последовательно применять к ним операции, сохраняя структуру контекста. В Java примером монады может быть класс Optional.
Чтобы реализовать монаду, нужно:
- Создать класс-обертку с типом параметра.
- Реализовать метод
flatMap(илиbind), который принимает функцию из значения в монаду и возвращает новую монаду. - Реализовать метод
unit(илиof), который оборачивает значение в монаду.
Пример простой монады "Box":
public class Box<T> {
private final T value;
public Box(T value) {
this.value = value;
}
public <R> Box<R> flatMap(Function<T, Box<R>> f) {
return f.apply(value);
}
public static <T> Box<T> of(T value) {
return new Box<>(value);
}
public T get() {
return value;
}
}
// Использование:
Box<Integer> box = Box.of(5);
Box<Integer> result = box.flatMap(x -> Box.of(x * 2));
System.out.println(result.get()); // 10
Таким образом, монада позволяет последовательно применять операции, не выходя из контекста (обертки). В реальных проектах часто используют готовые монады, например, Optional, Stream или библиотеки функционального программирования.