Описание тега dci
Данные, контекст, взаимодействия (DCI)
Профессор Трюгве Рейнскауг изобрел DCI для решения конкретной проблемы в ОО-коде; очень сложно прочитать ОО-код для конкретного варианта использования, поскольку он часто распространяется на множество различных классов, и поток управления между методами этих классов зависит от того, какие объекты созданы для каких переменных.
С помощью DCI Реенскауг предложил новый способ кодирования для вариантов использования, где каждый вариант использования реализован в виде контекста, и каждый участвующий объект имеет роль в этом контексте.
Методы могут быть написаны для контекста и для ролей. Методы роли считаются методами экземпляра объекта, играющего связанную роль. RoleMethod существует только в контексте. Когда объект больше не играет роли, RoleMethods больше не являются частью объекта
Этот подход позволяет организовать код для данного варианта использования в конструкции Context, и его можно легко прочитать и понять как полный артефакт.
DCI - это не шаблон, который может быть легко реализован на любом языке ОО, это скорее предложение для следующего развития вселенной ОО. Для большинства языков необходимо добавить новые ключевые слова. Reenskaug, однако, выполнил реализацию DCI в SmallTalk, и языковой вызов Marvin был разработан и реализован с учетом поддержки DCI.
Чтобы узнать больше, посмотрите на сайт сообщества DCI под названием fullOO