Я работал фрилансером в течение длительного времени, и почти 90% проектов касались Java Swing (настольных приложений). Кроме того, многие проекты включали в себя миграцию с таких языков, как Visual Fox Pro на Java, это было больно, потому что сложная часть не мыслила в логике, которая уже выполнена, тяжелая часть - это код, который является беспорядком и превращает его в красивый код, соответствующий хорошим практикам и использующим шаблоны проектирования, поэтому рекомендуется составить схему или карту в вашем уме, как вы можете отделить свой код от концепций Model, View, Controller.
MVC, как уже упоминалось, поможет вам иметь красивый, удобный и удобный для чтения код, а также следовать парадигме программирования и передовым методам.
Вид: Очевидно, что часть, которая взаимодействует с пользователем (пользовательский интерфейс), в случае Swing, ваши окна, фреймы, панели и весь код, который включает в себя графические компоненты, необходимые для вашего приложения.
Контроллер: включает в себя основной или бизнес-логики, которые вы ставите для своего приложения, в этом «слое» вы должны включить функциональность и «как мое приложение достигнет целей?».
Модель: Связанные с данными, которыми вы управляете, например, вашими сущностями и классами, которые представляют данные, которые вы хотите управлять или предоставлять обслуживание.
Применение MVC не так сложно, но, как я уже упоминал, иногда бывает больно, когда вам нужно перенести свой код из структуры неприменимого MVC в структурированное приложение MVC. Легче начать кодирование с помощью MVC.
Способ, которым я привык к этому - с помощью maven и отделить мое приложение на небольшие «модули», конечно, вам не нужно maven, я просто нашел его полезным в тот момент, но в любом случае вы можете попробуйте практиковать или привыкнуть к MVC, отделив ваше приложение от небольших проектов, например:
Java Project 1: модель данных приложения (содержит весь код, связанный с управлением данными: объекты, dtos, beans, daos)
Java Project 2: application-core-controller (содержит всю бизнес-логику и функциональность, здесь вы можете использовать шаблон фасада, если вы хотите сделать свой код более «прозрачным», когда вы соприкасаетесь с вашим видом)
Java Project 3: приложение-вид-Ui (содержит все панели, рамки и графические элементы)
Работая таким образом, помогли мне (и заставил меня), чтобы использовать для разделения моего кода и следить за что действительно важно для проекта, над которым я работаю. Например, если я использую модель данных приложения, я сосредоточен на модели данных, я не думаю о бизнес-логике и графическом интерфейсе.
Длительное объяснение, возможно, кто-то может сделать это лучше, но надеюсь, что я мог бы помочь вам или хотя бы дал вам руку с этим.
С уважением.
Добро пожаловать в гнездо шершней. Swing действительно смешивает парадигму MVC, позволяя виртуализировать VC в один компонент. Хорошее или плохое не имеет значения, так оно и есть. То, что он делает, это попробовать и отделить данные от представления. Есть несколько школ мысли, в которых говорится, что вы должны удалить элемент «контроля» из представления в свой класс, лично я думаю, что это просто увеличивает сложность и предлагает больше проблем, чем это стоит - ИМХО. Вообще говоря, ваш взгляд/контроллер никогда не сможет напрямую изменять данные, это ответственность за модель. IMHO – MadProgrammer
А, спасибо. Это сделало вещи более ясными. Но согласитесь ли вы, что имеет смысл ввести отдельный контроллер, если реализация GUI может измениться (например, на SWT)? Слишком плохо, что я не могу поддержать ваш комментарий - еще нет репутации :) – 2013-04-18 00:35:30
Отдельный контроллер будет иметь смысл только в том случае, если API/фреймворки работают подобным образом, имеют некоторые типы интерфейсов. Тем не менее, если вы пишете свой контроллер, используя тот же парадигм, что и в моделях (т.е. начинайте с интерфейса, переходите к абстрактной реализации, а затем допускайте несколько конкретных реализаций), это выполнимо. Это должно быть считаться балансирующим актом, но, как мне нравится, все абстрагироваться, чтобы реализация не была известна тем, кто ее использует, да, я бы счел это разумной идеей – MadProgrammer