Должен ли я использовать рамки?

Я знаю, что этот вопрос неопределенный, но я постараюсь прояснить ситуацию.

Я начинаю проект Java с использованием графического интерфейса Swing. Я хочу следовать шаблону MVC и мог бы использовать некоторую помощь из инфраструктуры для организации архитектуры проекта. Я думал об использовании Гриффона, хотя я полагаю, что другие могли бы добиться цели.

Итак, это хорошая идея использовать каркас с точки зрения:

  • Эффективность программирования: Конечно, она будет улучшена... большую часть времени. Точнее, что, если проект маленький? Или большой? Что если я уже очень хорошо знаком с Java и Swing? Что если я не? Что если проект должен поддерживаться кем-то, кто ничего не знает о фреймворке, который я использовал?

  • Ценность обучения. Буду ли я просто "учиться использовать фреймворк" вместо того, чтобы больше узнавать о Java и Swing в другой среде?

  • Профессиональная ценность: предпочли бы компании разработчика, который знает "больше" фреймворков (даже если они не могут быть теми, которые они намереваются использовать) разработчику, который лучше знает "традиционный" подход?

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

4 ответа

Решение

Я оценивал Гриффона как основу. У меня сложилось впечатление, что этот проект медленно умирает. ИМХО Groovy больше не является мейнстримом (интересно, было ли это когда-нибудь мейнстримом?). Теперь всем нравится Scala.

Теперь вернемся к вашему вопросу:

  • Большинство фреймворков ожидают, что вы будете следовать стандартному пути разработки. Любые изменения / настройки, скорее всего, приведут к появлению сложных в обслуживании решений (впоследствии они будут называть это архитектурой). Выберите структуру, которая позволяет вам делать 95% того, что вы планируете делать. И да, выберите основную структуру.
  • Griffon основан на Groovy, поэтому сначала вы должны освоить Groovy. Хорошо, Groovy - это язык JVM, и если вы в порядке с Java, это очень поможет, но все же все эти DSL потребуют некоторого времени, чтобы прийти в голову.
  • Если вы знаете какую-то основную структуру - это ценный актив. Печальный факт заключается в том, что фреймворки имеют тенденцию исчезать / умирать, и вам приходится постоянно искать новые интересные вещи. Вы никогда не прекращаете учиться (хотя ключевые принципы не могут быть изменены и остаются неизменными от структуры к структуре)

Конечно, я предвзят, когда дело доходит до Гриффона, но я постараюсь быть максимально объективным:

  • Griffon - это инфраструктура / платформа MVC для JVM. Это правда, что языком программирования является Groovy, однако можно использовать и многие другие, см. Этот пример в руководстве http://griffon.codehaus.org/guide/latest/guide/tips.html, где показано, как может быть написано чистое Java-приложение. Другие варианты возможны, если вы установите конкретный плагин http://artifacts.griffon-framework.org/tags/plugin/polyglot
  • Философия Гриффона заключается в том, чтобы ваш выбор оставался открытым. Это правда, что иногда фреймворк заставляет вас следовать определенному пути, однако он предоставляет достаточно места для ног, то есть вы заставляете его танцевать под свою собственную мелодию. Например, написание Views обычно выполняется в соответствии с Groovy SwingBuilder DSL (тонкий уровень абстракции для Swing), но вы можете перейти на уровень Java и писать на простом Java/Swing, если хотите; или выберите NetBeans Matisse, Abeille Froms Designer или любой другой визуальный инструмент, поддерживающий Swing.
  • Плагины являются ключом к успеху Гриффона. Как вы можете видеть на http://artifacts.griffon-framework.org/category/all/plugins, в настоящее время есть 211 плагинов, и их будет еще больше.

Но, в конце концов, важно только одно мнение: ваше. Я бы порекомендовал вам провести несколько часов с Гриффоном, если к тому времени вы не увидите добавленной стоимости... Боюсь, нам придется работать усерднее, чтобы сделать его лучше.

ура

Как мы знаем, Griffon основан на Groovy, а Groovy имеет прекрасный стиль Java, возможно, вы избежите большого количества строк кода, но всегда нужно учитывать некоторые аспекты, такие как знание и расписание.

  • Знание: ваша производительность связана с тем, что вы знаете, и как использовать то, что вы знаете, если вы чувствуете себя способным к Java, используйте Java, потому что, похоже, ваша цель - использовать MVC, и, как сказал Джунед, мы можем сделать это с Swing, тоже.
  • Расписание: Если у вас есть время учиться и вы действительно хотите изучать новую среду, это самое время, но вы должны следовать своему расписанию, не забывайте, что вам нужно закончить этот проект вовремя.

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

Избегайте погружений в темноте без фонарика.

Реализация шаблона MVC для среды должна быть простой, если вы понимаете это. Сначала обратите внимание на это: http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller

Теперь, перейдя в среду, основанную на Swing, вы можете реализовать свой код, разделив его на Model-View-Controller. Представления - это ваши классы Swing, где вы на самом деле создаете пользовательский интерфейс. В таких классах вы должны просто фиксировать действия пользователя через разных слушателей, но не должны реализовывать какую-либо бизнес-логику. Контроллер должен выполнять бизнес-логику и может использовать Model при необходимости.

Например, вы создаете графический интерфейс Swing для входа в систему. Создайте класс LoginView, в котором вы будете создавать рамку, текстовые поля, кнопки и т. Д., А также присоединять слушателей к различным элементам управления по желанию. Теперь, когда пользователь отправляет логин, вы должны вызывать контроллер для проверки учетных данных. Учетные данные могут храниться в БД, которая должна быть загружена и сохранена в модели (DAO). Контроллер должен получать пользовательский ввод из представления, корректные учетные данные из модели, а логика сравнения должна быть реализована в контроллере.

Надеюсь, поможет!

Другие вопросы по тегам