Назначение

Шаблон Domain Model (Модель предметной области) предназначен для реализации бизнес-логики в виде иерархии классов, каждый из которых представляет некую осмысленную сущность – либо такую крупную, как промышленная корпорация, либо настолько мелкую, как строка формы заказа.

Решение

Шаблон Domain Model подразумевает создание множества классов, описывающих предметную область. Одни классы призваны отобразить элементы данных, которыми оперируют в этой области,  другие должны формализовать те или иные бизнес-правила или бизнес-процессы. При этом совершенно необязательно, чтобы классы Модели предметной области соответствовали сущностям (таблицам) модели данных.

Результаты

Формализует обработку бизнес-логики, представляя ее в виде множества классов, каждый из которых отображает понятие предметной области: бизнес-сущость, бизнес-процесс или бизнес правило.

Практические соображения

Говоря о соответствии Модели данных и Модели предметной области, важно учитывать сложность последней. Сложная модель может более адекватно представить бизнес-логику, но труднее поддается отображению в реляционную схему базы данных. В простых моделях подчас достаточно применять варианты тривиального типового решения Активная запись (Active Record), в то время как в сложных без замысловатых преобразователей данных (Data Mapper) порой просто не обойтись.