Header background

Новый паттерн в работа на себя

классная дата

·

март 2026

Паттерн DWH

Паттерн DWH призван решить проблему человека-машины. Чтобы человеку не было больно от того что его контроллер или сервис продали вместе с кодом проекта

Согласитесь довольно важно свое пространство которое вы создали своей работой, не оставить для захламления и обидных и досадных ошибок других програмистов.

Вы ведь следите за своим шедевром, наверно, как и я. За своим BIM проектом, который сначала раздули, а потом сломали, причем так что фирма еле тянет с теми ошибками которые внесли новички.

Что же такое DWH? D-Data-данные которые относятся к текущей задаче в проекте. То есть от них зависит модель, которая будет работать, конкретно, в вашей части всего проекта, модуля, сервиса. Модель если она общая может браться из базы данных которая работает для верховного контроллера. Ведь как говориться сервис должен выполнять одну задачу - конкретно ваш код для задачи. Если модель не общая то есть не глобальная база данных то должны быть сформированы входные данные(D) для вашего сервиса, которые в свою очередь берутся из данных верхнего сервиса, контроллера. И возможно в основании браться из базы данных, если таковая имеется. Важно что данные должны проходить через слои контроллеров и сервисов как на чтение, так и на запись. Меньшая связнось!

Хорошо бы тут подумать над защитой чтения/записи.

W-window- окно. В окно входит и Input воздействия, как рукоять для открытия и закрытия окна. Окна могут быть вложенными как ElementFramework в WPF. Который отвечает за один или несколько, как правило одинаковых контролов. Несколько контролов как правило объединены логически в одно окно.

H-Handler- обработчик данных(D), с выводом и вводом окна(W). Как правило окно(W) имеет свои входные/выходные данные как в паттерне MVVM. Который как один из своих элементов называет ViewModel. Она же собой представляет данные для вида(View). Ведь MVVM, таким образом разделяет окно (W) с данными обработчика(H). Это даёт меньшую связность между отображаемым данными (W) и данными конкретной задачи(D).

Замечу что все обработчики вложены изначально в верховный обработчик иерархически. Иерархия обработчиков разделена логически на задачи и подзадачи. Вообще иерархия хорошо работает если задачи декомпозировать примерно. Так как любая задача не может быть легко разделена по своему физическому смыслу, поэтому из-за не додуманной архитектуры можно получить всего два уровня иерархии обработчиков. Думайте о простоте вашего проекта, тогда и получиться нормальная архитектура. Для систем в которых безопасность важнее чем красота архитектуры там важна запутанность, в том числе и в иерархии обработчиков. От этого только опытные разработчики знают как написать код - это сужает группу ответственных людей и защищает социально.

Может сейчас кто то хочет сказать что: какое отличие от других паттернов?, но опытные поймут на сколько важно иметь правильные названия для их написанного кода. Не хотите защищаться ваше дело!