Что использовать? MVC, MVP или MVVM или …?

Я запущу проект Java разработать настольное приложение. Что использовать в качестве шаблона уровня представления (MVC, MVP, MVVM или....)?

... если это возможно с некоторым рабочим небольшим примером... :-)

36
задан Majid 21 July 2014 в 08:08
поделиться

2 ответа

На самом деле, конечный пост, который вы ищете, это Этот ответ Этот ответ из Karsten Lentzsch (славы jgoodies) в Рамки Swings и лучшие практики Рамки SWING и лучшие практики Нить.

Здравствуйте,

Я уже несколько лет пишешь качающиеся приложения, которые находят многие люди элегантный И я учу разработчикам работать с качелями эффективно: как Для структурирования и сборки приложений, как связать и подтвердить дату, а также как найти, дизайн, макет и реализацию хорошо спроектированы Экраны в качелях.

Я бы сказал, что для качания нет «лучших практик». И Я сомневаюсь, что любой может предоставить «лучшие» практики, потому что это требуют обсуждений среди разрабатывателей и поставщиков решений о подходах, что хорошо работает технически и что легко понять и работать с. Кроме того, лучшие практики объяснят, кто может достичь, какое качество результата, и они описали бы производство затраты на время и производство; Но я никогда не мог найти эту информацию онлайн или в качании.

На мой взгляд, отсутствие передовой практики и информации Как построить Swing App - самые большие разработчики препятствий, когда начиная с Качать. Большинство разработчиков я работал, были медленными в нахождении дизайна, Реализация макетов, строительных панелей, привязки данных, обработка событий, и устраивая различные детали кода и слои кода. И много свинга Приложения, которые я видел сосать; Помимо их плохого визуального дизайна, они трудно понять и даже небольшие изменения затратывают много. Типично Разработчики не имели подсказки, где поставить какой код?, как отделить опасения?, как связать вещи вместе? Как работать с действиями? как Чтобы запустить приложение?, а как хранить и восстановить состояние интерфейса? Наиболее Разработчики не хватает руководящих принципов, чтобы следовать.

Но я обнаружил, что средний разработчик может хорошо работать с качелями, если только взяты в руку - примерно от 3 до 10 дней. Почти все ваши Вопросы могут быть ответы или адресованы кодом, библиотеками, Архитектура приложений, шаблоны, практики общего программирования, хорошо разработанные примеры, учебные пособия и т. Д. Я преподаю развитие качелей процесс, который построен вокруг 3-х уровней архитектуры, которая разделяет Домен, инструмент и презентационные слои и основаны на продуктивном Макетная система. Хотя большинство запчастей сделаны программно Разработчики быстро получают результаты и как код, так и визуальный дизайн становится вполне последовательным. Это может повысить производительность разработчика много - в той степени, в той степени, в той степени, что качающиеся работа принимает значительно меньше Фракция проекта работы.

Так что вы можете сделать? Я настоятельно рекомендую изучать Мартин Фаулер Проект для дальнейших «шаблонов архитектуры приложения предприятия». Я обнаружил, что эти шаблоны очень хорошо работают с качанием и качели Команды - даже для разработчиков, которые новые для качания и качели архитектура. Я бы выбрал следующие шаблоны: «Презентация Модель "," разделенный домен "и" разделенная презентация ". Я лично Подготовьте модель презентации (модель приложений для Smalltalkers), над моделью вида-представления - ведущего (MVP). Тем не менее, MVP является правдой и хорошо изученная альтернатива.

Шаблоны Фаулера могут быть объединены с архитектурой 3-клиента-уровня Это хорошо влияет на умеренно большие качели приложения. Он состоит доменного слоя, слой презентации и слой посреднической модели. Я изложил эту архитектуру в моем привязке данных. Приложения на основе MVP могут быть структурированы в этих 3 уровнях клиента тоже.

Основная задача для качающихся приложений является связывание данных: как подключиться Доменные объекты и свойства объекта домена на компоненты качания. По сути, вы можете скопировать свои данные взад и вперед, или строить цепочки Адаптеры из ваших доменных объектов к компонентам пользовательского интерфейса. Копирование подход легко понять и часто первый выбор для тех которые новые для качания или связывания данных; Я бы сказал, что это хороший выбор. С другой стороны, копирование делает его намного сложнее синхронизировать виды. Цепи адаптера и автоматические или полуавтоматические обновления могут Значительно уменьшите количество кода, необходимого для привязки данных домена к интерфейсу. Недостатком является, что этот подход гораздо сложнее понимать. Как вы указали, качели не дают отличной абстракции Для многоразовой и гибкой модели, которая может быть использована для привязки текста поля; Интерфейс документа не подходит для общих данных доступ. Есть несколько доступных библиотек, которые обеспечивают валюмодель Интерфейс, который только что предназначен для добавления общего, мощного и Гибкая модель для однозначных данных: строки, логические, цифры, Даты и т. Д.

Я не знаю о качающейся книге, которая объясняет настоящее приложение Swing процесс разработки. В идеале такая книга будет объединять шаблоны, Методы архитектуры и передачи данных, упомянутые выше и будут Опишите, как это реализовать в качании. Во всяком случае, есть 10 лет Документация для процесса разработки приложений SmallTalk, который только что это. Архитектура oracle и документация и документация не Это завершено, но может быть проще прочитать для разработчиков Java. Я предоставляю презентация о привязке данных, что касается шаблонов Fowler, 3-уровня архитектура и реализация качания для этих шаблонов и автоматическое привязку данных. Учебные источники моей библиотеки связывания может помочь вам навес с цепочками адаптера и валюмодели интерфейс. Лучшая документация для шаблона MVP можно найти в Документы Dolphin SmallTalk.

Как только вы выбрали вашу архитектуру и настольный набор настольных компьютеров, вы следует обратиться к следующим более основным задачам качания: 1) улучшить Внешний вид, выбрав набор профессионального внешнего вида и чувствует себя уместно Для набора целевой платформы 2) Выберите систему макета, которая поможет вам строить хорошо спроектированные и последовательные экраны быстро, 3) Выберите данные Решение валидации, а 4) схватить сумку решений для повседневных качелей задания.

Есть пара проектов, которые описывают качалку архитектуры, Адрес привязки данных и типичных качающих задач, например: Sun's JDNC, JCLING / ADF Oracle / ADF, Spring RCP, платформа NetBeans. я обеспечить коммерческий набор качающихся решений, основанных на Открытые исходные библиотеки Jgoodies и добавляют мешок для решений и источников Для всех публичных JGoodies Tools и демонстрации. Эти источники предназначены для Объясните, как связать все вопросы, упомянутые выше.

Позвольте мне добавить свое стандартное предупреждение о так называемом «MVC» Frameworks. Качать Не использует MVC, он использует модифицированный шаблон. MVC часто неправильно и неправильно понял - особенно в контексте качания. Кроме того, MVC хорош для компонентов пользовательских интерфейсов, а не для приложений. Следовательно, я рекомендую искать концепции, решения и библиотеки, которые отражают И работа с архитектурой Swing, а не MVC.

Сообщество изобретателя шаблона MVC представила ApplicationModel (теперь известный как модель презентации) примерно в 1993 году; МВП последовал чуть позже. На мой взгляд, эти два узора гораздо больше Полезно для качания, чем MVC. Недавно окружающая среда, которая принесла Узор модели презентации к большей аудитории переместился на новый Архитектура: «Поллок». Заинтересованные читатели могут посмотреть, как это отличается от цепей адаптера, которые часто сочетаются с Модели презентации.

Последнее, но не менее важное личное заявление. Я могу работать намного лучше с Качаться, чем с другими инструментариями или рамками, которые я использовал раньше; я могу сделать больше с меньшим количеством кода, код лучше структурирован, легче поддерживать, и я быстро получаю результаты.

Надеюсь, это поможет. С уважением, Карстен Ленцш

Список литературы: дополнительные модели Фаулера - http://martinfowler.com/eaadev Презентация привязки данных - http://www.jgoodies.com/articles/ MallTalk App Dev Process - http://www.cincom.com/downloads/pdf/appdevguide.pdf Pattern MVP документация - http://www.object-arts.com/educationcentre/patterns/mvp.htm Sun's JDNC Проект Home - http://jdnc.dev.java.net/ FAQ ADF Oracle - http://www.orcle.com/technology/products/jdev/htdocs/905/adffaq_otn.html Spring RCP проект домой - http://www.springframework.org/spring-rcp.html Домашняя платформа NetBeans - http://www.netbeans.org/products/platform/ Jgoodies Swing Suite - http://www.jgoodies.com/products/index.html

Если вы не Вы знаете, Карстен и тоще, тогда поверьте,Этот парень действительно знает, о чем он говорит. Я тепло рекомендую внимательно прочитать его ответ и материал, который он выступил в качестве ссылки. Более конкретно, обязательно проверьте его шаблоны рабочего стола и привязки данных . Удивительно, что я предпочитаю старую версию на новый . Новый .

Позвольте мне процитировать свой слайд о MVC VS MVP:

  • Да, SWING использует форму , расширенного из MVC внутри
  • , но MVC предназначен для компонентов, MVP для Приложения

, а затем из резюме:

Но я не могу сделать лучшую работу, чем Карстен, объясняя это, я могу на лучшем перефразировать его. Так что просто прочитайте его!

Также возможно, посмотрите на демонстрационные демонстрационные демонстрации для изучения (более точно, Скотт-фиолетовый ).

52
ответ дан 27 November 2019 в 05:59
поделиться

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

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

Мои 2 цента.

0
ответ дан 27 November 2019 в 05:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: