DCI (Data-Context-Interaction) — это шаблон проектирования, предлагающий разделить логику приложения на три взаимодействующие части:
Account, User). Не содержат бизнес-логики, только данные и базовые операции доступа.Основная идея DCI — выделить операционную логику (бизнес-процессы) из объектов данных, делая их более чистыми и повторно используемыми. Логика концентрируется в контекстах и ролях, что облегчает понимание и изменение конкретных сценариев использования.
Преимущества DCI:
Пример (концептуальный): Перевод денег между счетами.
Account (содержит баланс, методы deposit, withdraw).TransferMoneyContext. Он связывает два объекта Account (источник и получатель) и определяет роли.SourceAccount (Роль для исходного счета, может withdraw).DestinationAccount (Роль для счета получателя, может deposit).В TransferMoneyContext будет описана логика: взять деньги с SourceAccount, если возможно, и положить на DestinationAccount.
DCI не привязан к конкретному языку, но его реализация может варьироваться. В объектно-ориентированных языках роли часто реализуются через миксины, трейты, или интерфейсы/классы, которые объекты данных "принимают" в контексте.