Sobes.tech
Назад к вопросам
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 или библиотеки функционального программирования.