Предполагая, что вам приходится иметь дело с нетривиальным проектом, я думаю, что у вашей проблемы есть два аспекта, которые должны быть рассмотрены совместно для настройки архитектуры и качества кода:
Для именования я стараюсь обеспечить наибольшую сплоченность в каждом пространстве имен и следовать Общему принципу закрытия и Общему принципу повторного использования .
Для модульности я стараюсь использовать модуль для каждой основной архитектурной проблемы проекта и удобно называть его пакеты.
MVC - это шаблон модуля представления, целью которого является разделение того, как модуль представления управляет потоком, какие модели данныхон основан на логике, связанной с представлением.
В моей java IDE (например, Eclipse) я использую проект для каждого модуля, поэтому веб-модуль будет проектом, а модуль рабочего стола - другим проектом.Например, в веб-проекте у меня есть общий префикс, такой как:
com.mycompany.app.web
, и в нем у меня есть .controllers (или действия) потомок, .модели потомок и тд.
com.mycompany.app.web.models
com.mycompany.app.web.actions
Если я использую базу данных, я полагаюсь на модуль DAO, другой проект.Модуль DAO не имеет презентации, поэтому он не имеет подхода MVC.Он сохраняет объекты домена, поэтому, возможно, он опирается на модуль домена.В этих модулях я использую префиксы, такие как:
com.mycompany.app.domain
com.mycompany.app.dao
Я стараюсь не путать Модель в MVC с приложением Домен ;они не одно и то же.
Другая распространенная ошибка - путать Controller с Business Logic ;бизнес-логика должна быть размещена в модуле и распределена между модулями представления, контроллером в пространстве имен модуля представления (веб-интерфейс или рабочий стол).
A Модель (в MVC - модель представления) - это объект, используемый представлением для демонстрации чего-либо пользователю: он может содержать один, комбинацию или набор объектов Domain .Контроллер использует доступные модули (DAO и т. Д.) Для построения представления Модель , а затем передает его в Представление .
View тогда может полагаться только на Model (только одну, специально созданную контроллером) и запрашивать модели только для контроллеров (единственная, способная создавать модели). Представление , особенно для веб-презентаций, часто кодируется на разных языках, поэтому часть кода может остаться за пределами соглашений об именах.