Anemic Domain Model — паттерн (Fowler называет антипаттерном), при котором объекты домена содержат только геттеры и сеттеры, а вся бизнес-логика — в отдельных Service-классах.

Признаки:

  • User — только id, name, email + getters/setters.
  • UserService.change_email(user, new_email) — вся логика тут.
  • Никаких методов на самих сущностях, никаких инвариантов.

Fowler (2003):

The fundamental horror of this anti-pattern is that it’s so contrary to the basic idea of object-oriented design; which is to combine data and process together.

Проблема: инварианты не защищены — любой Service может присвоить произвольное значение. Поведение размазано по нескольким сервисам.

Когда оправдан: сервисы-оркестраторы (ETL, message routers), где нет собственных бизнес-правил. Всё, что делает сервис — координация. В этом случае «настоящий» domain находится в других сервисах.

Синонимы

Anemic ModelАнемичная модель

Не путать с

← ко всему глоссарию