Hello
Я пишу Swing-приложения в течение нескольких лет, которые многие находят
элегантный. И я учу разработчиков эффективно работать с Swing: как
структурировать и собирать приложения, как связывать и проверять дату,
а также как найти, спроектировать, оформить и реализовать хорошо продуманный
экраны в Swing.
Я бы сказал, что в Интернете нет "лучших практик" для Swing. А также
Я сомневаюсь, что кто-то может предоставить «лучшие» практики, потому что это было бы
требуют обсуждения среди разработчиков Swing и поставщиков решений
о подходах, что хорошо работает технически и что легко
понять и работать с. Кроме того, лучшие практики объяснят, кто может
достичь какого результата, и они бы описали производство
время и производственные затраты; но я никогда не мог найти эту информацию
онлайн или в книге по Swing.
На мой взгляд, отсутствие передовой практики и информации о том, как строить
Swing-приложение - самое большое препятствие, с которым сталкиваются разработчики, начиная с
Качели. Большинство разработчиков, с которыми я работал, медлили с поиском дизайна,
реализация макетов, создание панелей, привязка данных, обработка событий,
и расположение различных частей кода и слоев кода. И многие качели
приложения, которые я видел, отстой; кроме их плохого визуального дизайна они
трудно понять, и даже небольшие изменения стоят дорого. типично
разработчики не имели ни малейшего понятия, где разместить код, как отделить
касается ?, как связать вещи?, как работать с действиями ?, как
запустить приложение ?, а как хранить и восстанавливать состояние пользовательского интерфейса? Наиболее
разработчикам не хватает руководств.
Но я обнаружил, что обычный разработчик может хорошо работать с Swing, если
принимается только рукой - примерно от 3 до 10 дней. Почти все ваши
на вопросы можно ответить или решить с помощью кода, библиотеки,
архитектура приложения, шаблоны, общие практики программирования,
хорошо продуманные примеры, учебные пособия и т. д. Я преподаю разработку Swing
процесс, который построен вокруг 3-уровневой архитектуры, которая разделяет
доменный, инструментальный и презентационный уровни, основанные на продуктивном
макет системы. Несмотря на то, что большинство частей сделано программно
разработчики получают результаты быстро и как код, так и визуальный дизайн
становится вполне последовательным. Это может повысить производительность разработчика
много - в той степени, что работа Swing занимает значительно меньше
Фракция проектных работ.
Так что вы можете сделать? Я настоятельно рекомендую изучить Мартина Фаулера
проект для дальнейшего "Шаблоны архитектуры приложений предприятия".
Я обнаружил, что эти шаблоны очень хорошо работают с Swing и Swing
команды - даже для разработчиков, которые являются новыми для Swing и Swing
архитектура. Сначала я выбрал бы следующие шаблоны: «Презентация
Модель »,« Разделенный домен »и« Разделенная презентация ». Я лично
одобрить модель представления (модель приложения для пользователей, говорящих по-мелкому),
поверх шаблона модель-представление-презентатор (MVP). Тем не менее, MVP является истинным
и хорошо изученная альтернатива.
Шаблоны Фаулера могут быть объединены с 3-клиентской архитектурой
это хорошо масштабируется для умеренно больших приложений Swing. Он состоит
уровня домена, уровня представления и уровня модели-посредника.
Я изложил эту архитектуру в своей презентации привязки данных.
Приложения на основе MVP также могут быть структурированы в эти 3 уровня клиента.
Ключевой задачей для приложений Swing является привязка данных: как подключиться
доменные объекты и свойства доменных объектов для компонентов Swing.
По сути, вы можете копировать свои данные туда-сюда или создавать цепочкиадаптеры от ваших доменных объектов к компонентам пользовательского интерфейса. Копирование
подход прост для понимания и часто первый выбор для тех,
кто новичок в Swing или привязке данных; Я бы сказал, что это хороший выбор.
С другой стороны, копирование значительно усложняет синхронизацию представлений.
Цепи адаптера и автоматические или полуавтоматические обновления могут
значительно сократить объем кода, необходимого для привязки данных домена
в пользовательский интерфейс. Недостатком является то, что этот подход гораздо сложнее
Понимаю. Как вы уже отметили, Swing не предоставляет большой абстракции
для многоразовой и гибкой модели, которая может быть использована для привязки текста
поля; интерфейс документа не подходит для общих данных
доступ. Есть несколько доступных библиотек, которые предоставляют ValueModel
интерфейс, который просто предназначен для добавления общего, мощного и
гибкая модель для однозначных данных: строки, логические значения, числа,
даты и т. д.
Мне неизвестна книга о Swing, которая объясняет истинное применение Swing
процесс разработки. В идеале такая книга будет сочетать в себе шаблоны,
архитектура и методы привязки данных, упомянутые выше,
опишите, как реализовать это в Swing. Во всяком случае, есть 10-летний
документация для процесса разработки приложений Smalltalk, которая
делает именно это. Архитектура и документация Oracle JClient не являются
это завершено, но может быть легче читать для разработчиков Java. Я предоставляю
презентация о привязке данных, которая о шаблонах Фаулера,
3-уровневая архитектура и реализация Swing для этих шаблонов и
автоматическое связывание данных. Обучающие источники моей библиотеки Binding
может помочь вам познакомиться с цепями адаптеров и ValueModel
интерфейс. Лучшая документация для шаблона MVP может быть найдена в
Документы о дельфинах Смолтака.
Выбрав архитектуру и набор шаблонов рабочего стола, вы
должны решить следующие более основные задачи Swing: 1) улучшить
внешний вид, выбирая набор профессионального взгляда и чувствует себя соответствующим
2) выберите систему макета, которая поможет вам
быстро построить хорошо продуманные и согласованные экраны, 3) выбрать данные
решение для проверки и 4) взять пакет решений для повседневного Swing
задачи.
Есть несколько проектов, которые описывают архитектуру Swing,
обратиться к привязке данных и типичные задачи Swing, например: Sun's
JDNC, Oracle JClient / ADF, Spring RCP, платформа NetBeans. я
предоставить коммерческий набор решений Swing, основанный на
JGoodies библиотеки с открытым исходным кодом и добавляет пакет решений и источников
для всех публичных инструментов и демонстраций JGoodies. Эти источники предназначены для
объясните, как связать все вопросы, упомянутые выше.
Позвольте мне добавить мое стандартное предупреждение о так называемых "MVC" фреймворках. свинг
не использует MVC, он использует измененный шаблон. MVC часто
неверно процитированы и неправильно поняты - особенно в контексте Swing.
Кроме того, MVC хорош для компонентов пользовательского интерфейса, а не для приложений. Отсюда я
рекомендуем искать концепции, решения и библиотеки, которые отражают
и работать с архитектурой Swing, а не с MVC.
Сообщество изобретателей шаблона MVC представило
ApplicationModel (теперь известный как Presentation Model) около 1993 года; MVP
последовал чуть позже. На мой взгляд, эти две модели гораздо больше
полезно для Swing, чем MVC. Недавно среда, которая принесла
Модель представления модели для большей аудитории перешла на новый
Архитектура: "Поллок". Заинтересованные читатели могут Google, чтобы увидеть, как это
отличается от цепей адаптера, которые часто сочетаются с
Презентационные модели.
Последнее, но не менее важное личное заявление. Я могу работать намного лучше с
Swing, чем с другими инструментами или фреймворками, которые я использовал раньше я могу сделать
больше с меньшим количеством кода, код лучше структурирован, легче
поддерживать, и я быстро получаю результаты.
Надеюсь, это поможет. С уважением, Карстен Ленч
Ссылки: дальнейшие паттерны Фаулера - http://martinfowler.com/eaaDev
Представление привязки данных - http://www.jgoodies.com/articles/
Процесс разработки приложения для Smalltalk -
http://www.cincom.com/downloads/pdf/AppDevGuide.pdf шаблон MVP
документация -
http://www.object -arts.com / EducationCentre / Шаблоны / MVP.htm JDNC от Sun
Домашняя страница проекта - http://jdnc.dev.java.net/ FAQ по АПД Oracle -
http://www.oracle.com/technology/products/jdev/htdocs/905/adffaq_otn.html
Весенний проект RCP home -
http://www.springframework.org/spring-rcp.html Домашняя страница платформы NetBeans
- http://www.netbeans.org/products/platform/ JGoodies Swing Suite - http://www.jgoodies.com/products/index.html
Если вы не знаете Karsten и JGoodies, то, поверьте мне, этот парень действительно знает, о чем говорит. Я настоятельно рекомендую внимательно прочитать его ответ и материал, который он разместил в качестве справочного материала. В частности, не забудьте проверить его Настольные шаблоны и привязку данных . Удивительно, но я предпочитаю старую версию новой новой .
Но я не могу лучше, чем Карстен, объяснить это, в лучшем случае я могу перефразировать его. Так что просто читайте его!