Применение mvc к дизайну, управляемому доменом

Как с практической точки зрения можно адаптировать модель предметной области к шаблону MVC? Например, могу ли я использовать некоторые классы-оболочки?


person James P.    schedule 13.05.2010    source источник


Ответы (1)


Они на самом деле не связаны.

MVC — это шаблон проектирования для разделения проблем хранения данных (модель), представления различных представлений данных (представление) и взаимодействия с этими данными (контроллер). Хотя это может быть шаблон «дизайна», на самом деле это дизайн кода. Представления обычно, но не обязательно, используются для графических интерфейсов.

Domain-Driven Design — это стиль разработки программного обеспечения, при котором вы фокусируетесь на моделировании предметной области, чтобы создать общую хорошо понимаемую модель предметной области — «модель предметной области». Дизайн, ориентированный на предметную область, — это не просто «дизайн», но также представленный в коде, требованиях, обсуждениях между различными заинтересованными сторонами и т. д.

Таким образом, вы не стали бы «адаптировать» одно к другому, хотя вы, безусловно, можете реализовать MVC, используя объекты из вашей модели предметной области. Например, если вы смоделировали сущность BankAccount и написали для нее соответствующий класс, вы можете использовать ее в качестве модели в триаде MVC. Возможно, контроллер обрабатывает внесение и снятие наличных, а несколько представлений (например, дебетовое, кредитовое и сводное представление) обновляются при изменении модели. Существует несколько разновидностей MVC, и в зависимости от того, что вы выберете, вы можете в конечном итоге изменить свою модель предметной области. Например, вы можете использовать шаблон наблюдателя, в котором ваши представления уведомляются всякий раз, когда объект модели изменяется. Это означает, что вы будете смешивать понятия, не относящиеся к домену (регистрация наблюдателя, уведомление и т. д.), в свой объект домена. В этом случае может быть лучше обернуть объект предметной области, чтобы сохранить четкое разделение между моделью предметной области и уровнем представления, если это важно для вас. Возможно, это то, что вы имеете в виду под «адаптацией» одного к другому.

person SingleShot    schedule 13.05.2010
comment
В этом случае может быть лучше обернуть объект предметной области, чтобы сохранить четкое разделение между моделью предметной области и уровнем представления, если это важно для вас. Возможно, именно это вы имеете в виду под адаптацией одного к другому. Да, это я и имел в виду. Поскольку доменная модель предполагается малокровной, мне было интересно, использовать ли обертки или нет. Спасибо за ответ. - person James P.; 13.05.2010