Spring mvc: один шаг или два шага? - PullRequest
4 голосов
/ 26 сентября 2019

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

enter image description here

Я прочитал весь текст, но понял только одно: в случае двухэтапного просмотра у меня есть 1 дополнительный промежуточный элемент логический Посмотреть.И это выполняется некой глобальной «сущностью».

Мне действительно непонятно, зачем мне это нужно.В своей практике я использую Spring - MVC для веб-приложения.Не могли бы вы объяснить, какой шаблон используется в этой структуре?Могу ли я выбрать / изменить его?

1 Ответ

1 голос
/ 26 сентября 2019

Этапы ответственности

  1. Первый этап переводит модель в логическое представление - вы можете думать о ней как о модели, описываемой в некой универсальной форме (для этой цели Фаулер использует XML).

  2. Второй этап способен читать логическое представление и отвечает за его преобразование в богатый интерфейс со стилями, форматированием и всем, что нам нравится.

Способ, которым мы получаем представление

Вам необходимо создать некоторый HTML-объект, имеющий объект следующего класса:

public class Customer {
    private String name; //value: John Snow
    private String address; //Winterfell
}

На первом этапе вы переводите эти данные клиента в логическиеview:

<screen>
<title>Customer data</title>
<name>John Snow</name>
<address>Winterfell</address>
</screen>

XML - это хорошая форма для преобразования с помощью XSLT, поэтому наш второй этап представлен некоторым XSLT, который преобразует наш XML в некоторый HTML-код и окружает его нижним колонтитулом, заголовком, некоторыми элементами менюи т. д.

Теперь у нас есть схема: модель -> первый этап -> xml -> второй этап (XSLT) -> html -> пользователь

что мы можем сделать с этим

Эта схема позволит вам:

  1. Чтобы создать несколько тем для вашего приложения.В этом примере вы можете использовать скрипт XSLT в качестве темы.Вы меняете тему, меняется и внешний вид вашего приложения.
  2. Чтобы внести глобальные изменения в внешний вид вашего приложения, изменив только один скрипт XSLT.

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

Вот как Фаулер описывает это.Это может показаться вам интересным, поскольку в вашей редакции книги это может быть описано по-другому:

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

Как это связано с Spring MVC

Spring MVC реализует другой шаблон - модель-представление-контроллер.Наш шаблон является частью просмотра, и мы можем решить , какую именно технологию просмотра использовать для Spring MVC.Если вы найдете какую-то инфраструктуру представления, которая реализует этот шаблон, вы можете подключить его к Spring MVC.

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

Что, если вместо этого мы используем одношаговое представление

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

Заключение

Помните, что книга написана около 20 лет назад, и в настоящее время у нас есть много замечательных технологий, которых не было 20 лет назад.

...