Шаблоны проектирования 101.
Модель предназначена для хранения данных (обычно при поддержке базы данных).
Просмотр предназначен для представления данных (без манипулирования ими).
Контроллер предназначен для манипулирования моделью и передачи ее в представление (например, здесь будет выбран правильный языковой стандарт).
MVC не обязательно означает, что у вас есть 3 различных класса, а скорее 3 компонента или слоя. Они абстрактны и не обязательно должны быть привязаны к одному физическому классу. Внутри вашего уровня Controller, который может состоять из любого числа вспомогательных классов или чего-либо еще.
Я согласен с частью того, что говорит cartoonfox, все переплетено. Например, если вы разрабатываете представление для корзины покупок, но модель содержит информацию о дне рождения, то это не сработает. Это просто шаблон проектирования, который поможет устранить дублирование усилий. Когда у вас меньше переменных и меньше шума, гораздо проще сосредоточиться на том, что нужно сделать, и очень хорошо это понять.
У меня была дискуссия с нашей командой об использовании аннотаций для отображения форм на веб-странице. Эти аннотации были помещены в модель или класс сущности. Вы часто будете работать напрямую с классами сущностей, поэтому это устранит некоторые накладные расходы и дублирование усилий, если вы разместите здесь свои аннотации. Поскольку ваши аннотации размещаются непосредственно в классе модели, вы не можете получить представление о дне рождения, это просто невозможно. Кроме того, следуя шаблонам, вы удаляете мусор, который не добавляет ценности к конечному результату. Вы просто пишете бизнес-логику и больше ничего не знаете.
Хотя аннотации были в том же классе, что и уровень модели, уровень представления или представления состоял из аннотаций и вспомогательных классов. Он не обязательно должен быть отдельными классами или границами.
Другой пример. Я работал над некоторыми PHP веб-приложениями в прошлом. Я использую приложения, потому что они были монолитным блоком кода, более или менее единственным основным методом со всей логикой (что вряд ли является функциональным приложением).
Если вы не абстрагируете код в функции и просто используете один метод, у вас будет много дублирования усилий. Если бы вы попытались понять этот монолитный кодовый блок, у вас возникла бы куча неприятностей (как и мне, было трудно узнать, что происходит, тогда я нашел бы подобный блок кода где-то еще и был бы ошеломлен, почему некоторые вещи были изменены так, как они были).
Это можно сделать любым способом, но шаблоны проектирования, такие как MVC, помогут вам упростить то, что вы пишете, чтобы заставить его работать, а также упростить процесс решения. Другой популярный шаблон дизайна или подход - разделяй и властвуй.
Чтобы ответить на ваши оригинальные вопросы:
В Java локализованные данные будут выполняться приложением прозрачно. Например, если вам нужна поддержка языкового стандарта США, вы должны создать файл свойств:
messages_en-US.properties
и затем поместите туда весь свой контент на английском языке. В зависимости от объема контента может потребоваться другой подход.
Для моего приложения у меня есть целые страницы на другом языке, так что я делаю вот что. Мой контроллер определяет локаль клиента или лучшее соответствие. Затем он выбирает, какое представление отображать, и передает модель (данные) в представление.
Если вам нужно динамическое форматирование для вашей даты / времени, то ваш контроллер отвечает за определение того, какой из них будет использоваться. Затем ваш взгляд отвечает за использование этого конвертера для форматирования значения.
Я использую JBoss Seam, поэтому шаблон проектирования MVC все еще используется, но более абстрактно. У меня нет настоящих «контроллеров», но есть перехватчик, который отвечает за обработку определенной части функциональности (определение локали клиента, затем другой для их предпочтения даты / времени). Мои контроллеры, которые будут эквивалентны Spring Controller, являются компонентами действий, отвечающими за обработку действий страницы.
Вальтер