TGViewer
Java Portal | Программирование Java Portal | Программирование @java_iibrary · 11.6K subscribers
Post #1758 2.3K
Если бы ты разрабатывал API, как бы ты дал клиентам выбор между синхронными и асинхронными вызовами, не дублируя одну и ту же логику дважды?

Многие разработчики попадают в ловушку дублирования методов -> один для синхронного использования, другой для асинхронного. На первый взгляд это кажется нормальным, но на деле удваивает работу по поддержке и может привести к скрытым багам, если один из путей обновить, а другой забыть.

Более умный подход заключается в том, чтобы один раз спроектировать основную логику и дать клиентам самим выбрать, как её использовать. Самый простой паттерн заключается в том, чтобы сделать асинхронную версию основным методом. Она может возвращать CompletableFuture или реактивный тип вроде Mono в Spring. Клиенты, которым нужен асинхронный вызов, используют его напрямую. Клиенты, которым нужен синхронный вариант, просто вызывают .join() или .get().

Таким образом, у тебя есть только один кодовый путь для поддержки. Асинхронные клиенты получают неблокирующую производительность, синхронные получают удобство блокирующих вызовов, а API остаётся чистым и устойчивым к будущим изменениям.

👉 Золотое правило здесь -> логику пишем один раз, используем её двумя способами.

👉 Java Portal
  • 👍 14
  • ❤ 4
More from @java_iibrary
  1. Sep 29, 2026Эволюция языков программирования 1940-е → Машинный код ⬇️ 1950-е → Ассемблер ⬇️ 1960-е → F…
  2. Sep 29, 2026Большинство Java-разработчиков используют эти термины каждый день. Удивительно, но многие…
  3. Sep 28, 2026💡 Java: не создавайте ресурсоёмкие объекты, пока они действительно не понадобятся. ✅ Иниц…
  4. Sep 28, 2026Проблема в продакшене. Приложение зависло. Вы запускаете: jstack <pid> Через несколько сек…
  5. Sep 27, 2026Java-разработчики, CopyOnWriteArrayList создаёт копию всего внутреннего массива при каждом…
  6. Sep 27, 2026Java-разработчики, ConcurrentHashMap потокобезопасен. Но он не блокирует всю коллекцию при…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →