0

Я видел людей, предлагающих реализацию MVC вместе с Луковой Archutecture. Но как могут сосуществовать два? Разве это не две разные архитектуры? Например, где находится контроллер в дизайне лука?Как MVC может сосуществовать с архитектурой лука?

Я понимаю комбинацию из нескольких шаблонов проектирования, потому что они обслуживают разные цели (поведение, создание и т. Д.) И могут быть независимо реализованы в разных модулях системы, но я не понимаю, как реализовать два разные архитектуры.

+1

В архитектуре лука пользовательские интерфейсы явно определены на внешнем слое. Контроллеры являются частью интерфейса приложения. Они будут снаружи, в зависимости от модели. (Просматривайте любые бизнес-интерфейсы, которые могут обернуть модели.) – David

+2

Думаю, чтобы задать вопрос ... Что заставляет вас думать, что шаблон MVC * нельзя использовать * в луковой архитектуре? – David

ответ

3

«Луковая архитектура» в основном применяется к слою модели и к различным типам структур, которые он содержит (услуги, репозитории, объекты домена, карты, единицы работы и т. Д.).

Вы также получаете различные пользовательские структуры, такие как вещи, которые вы в конечном итоге называете «адаптерами» и «генераторами» или другими именами для вещей, которые относятся к бизнес-логике, но не подходят ни в каком конкретном стандарте. Но все они находятся в (надеюсь) разных слоях.

Но это своего рода масштаб. Контроллеры (предположительно) являются очень простыми структурами. И взгляды лишь незначительно сложнее ... и предполагается, что вы на самом деле используете presentation objects.

TL; ничего не мешает MVC сосуществовать с луковой архитектурой, но MVC в конечном итоге станет основным в самом крупном масштабе.

4

MVC будет жить снаружи лука и отвечать за представление/проблемы API, делегируя любую логику домена в домен в середине лука.

Итак, представьте, что кто-то посещает вашу домашнюю страницу - это будет обрабатываться контроллером, который вернет представление - модель будет представлять собой любую информацию, необходимую для представления. Если вам нужна некоторая логика домена (скажем, некоторые специальные предложения показаны на главной странице), контроллер делегирует это домену - логика не будет находиться внутри самого контроллера. Аналогичным образом, домен будет возвращать какой-то объект домена, который тогда обычно должен отображаться в модели, которая будет использоваться представлением. Это представление затем возвращается в ответе.

Если вы еще не сделали этого, прочитайте гексагональную архитектуру, поскольку это в основном та же идея.

Смежные вопросы