TGViewer
Разработка с Дарьей Матвеевой Разработка с Дарьей Матвеевой @system_design_explained · 72 subscribers
Post #69 83
В функциональных языках рекомендуется делать все объекты immutable, и, хотя на работе я пишу на Java, тут тоже активно применяются функциональные подходы. Поэтому решила глубже разобраться в концепциях stateless / stateful.

📎 На поверхности лежит, что Stateful модель – это когда объекты имеют состояние и их можно менять. Stateless – когда они неизменяемы, и при изменении объекта фактически создается новый объект. Но для меня оказалось новым и неожиданным, что концепция иммутабельности также означает, что в программе невозможно различить два объекта, которые имеют одинаковые поля. А при мутабельности наоборот, каждый объект считается уникальным (даже если у них одинаковые поля). И можно рассматривать любой объект как пару – сам объект + некий его идентификатор. И поэтому stateful модель можно считать расширением stateless модели.

➖ В Java наоборот, по умолчанию объекты мутабельны, а для иммутабельности надо сделать много чего дополнительно: final поля, глубокое копирование в конструкторе, возвращение копий в геттерах. И, как оказалось, сравнение по полям в equals, для соблюдения концепции stateless.

✏️ Это с новой стороны прояснило для меня ситуацию со сравнением по ссылкам и с помощью метода equals. Если рассматривать разницу с точки зрения концепций stateful / stateless, то метод equals в Java можно считать техническим способом реализовать сравнение объектов в соответствии с выбранной концепцией. В случае мутабельности — подняться на уровень выше сравнения по ссылкам, чтобы определить для мутабельного объекта его уникальный идентификатор из его полей. А для иммутабельного — реализовать сравнение по всем его полям.
  • 🔥 1
More from @system_design_explained
  1. Sep 22, 2026Нашла способ, который мгновенно и без дополнительных усилий увеличил мою продуктивность пр…
  2. Mar 27, 2026Я в ВК : https://vk.ru/dev_with_dm
  3. Mar 27, 2026Читаю в последнее время много критики микросервисов, и у меня тоже есть пример, как раз за…
  4. Dec 4, 2025Недавно занималась задачей, где нужно было реализовать оптимистическую блокировку сущности…
  5. Nov 21, 2025Обнаружила еще один плюс TDD. Согласно подходу, я пишу тест, который падает, пишу код, что…
  6. Nov 13, 2025Недавно столкнулась с ситуацией — один из сервисов на тестовом стенде не вычитывал сообщен…
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 →