JavaBeans - JavaBeans

В вычислениях на платформе Java JavaBeans классы, которые инкапсулируют многие объекты в единый объект (компонент). Они есть сериализуемый, есть конструктор без аргументов, и разрешить доступ к свойствам с помощью методы получения и установки. Название «Бин» было дано, чтобы охватить этот стандарт, целью которого является создание многоразовый программные компоненты за Ява.

Это многократно используемый программный компонент, написанный на Java, которым можно визуально управлять с помощью инструмента построения приложений.

Функции

Самоанализ
Самоанализ - это процесс анализа Бина для определения его возможностей. Это важная особенность Java Beans API, поскольку она позволяет другому приложению, например инструменту проектирования, получать информацию о компоненте.
Характеристики
Свойство - это подмножество состояния Бина. Значения, присвоенные свойствам, определяют поведение и внешний вид этого компонента. Они устанавливаются с помощью метода установки и могут быть получены с помощью метода получения.
Настройка
Настройщик может предоставить пошаговое руководство, которому должен следовать процесс, чтобы использовать компонент в определенном контексте.
События
Бины могут взаимодействовать с моделью EventObject EventListener.[требуется разъяснение ]
Упорство
Постоянство - это способность сохранять текущее состояние Бина, включая значения свойств Бина и переменных экземпляра, в энергонезависимое хранилище и извлекать их позже.
Методы
Боб должен использовать методы доступа к инкапсулировать свойства. Компонент может предоставлять другие методы для бизнес-логики, не связанные с доступом к свойствам.

Преимущества

  • Свойства, события и методы компонента могут быть доступны другому приложению.
  • Компонент может регистрироваться для получения событий от других объектов и может генерировать события, которые отправляются этим другим объектам.
  • Для настройки bean-компонента может быть предоставлено дополнительное программное обеспечение.
  • Параметры конфигурации компонента могут быть сохранены в постоянном хранилище и восстановлены.

Недостатки

  • Класс с конструктор без аргументов может быть создан в недопустимом состоянии.[1] Если такой класс создается вручную разработчиком (а не автоматически какой-либо структурой), разработчик может не осознавать, что класс был создан неправильно. Компилятор не может обнаружить такую ​​проблему, и даже если она задокументирована, нет гарантии, что разработчик увидит документацию.
  • JavaBeans по своей сути изменчивы и поэтому не имеют преимуществ, предлагаемых неизменяемые объекты.[1]
  • Необходимость создавать геттеры для каждого свойства и сеттеры для многих, большинства или всех из них может привести к огромному количеству шаблонный код. Это можно смягчить с помощью таких инструментов, как Ломбок.

API JavaBeans

Функциональность JavaBeans обеспечивается набором классов и интерфейсов в java.beans упаковка.

ИнтерфейсОписание
AppletInitializerМетоды в этом интерфейсе используются для инициализации Бинов, которые также апплеты.
BeanInfoЭтот интерфейс позволяет разработчику указывать информацию о событиях, методах и свойствах Бина.
НастройщикЭтот интерфейс позволяет проектировщику предоставлять графический пользовательский интерфейс, с помощью которого можно настраивать компонент.
DesignModeМетоды в этом интерфейсе определяют, выполняется ли компонент в режиме разработки.
ExceptionListenerМетод в этом интерфейсе вызывается при возникновении исключения.
PropertyChangeListenerМетод в этом интерфейсе вызывается при изменении привязанного свойства.
PropertyEditorОбъекты, реализующие этот интерфейс, позволяют конструктору изменять и отображать значения свойств.
VetoableChangeListenerМетод в этом интерфейсе вызывается при изменении свойства Constrained.
ВидимостьМетоды в этом интерфейсе позволяют bean-компоненту выполняться в средах, где графический интерфейс недоступен.

Соглашения JavaBean

Чтобы функционировать как JavaBean учебный класс, объектный класс должен подчиняться определенным соглашениям об именах, построении и поведении методов. Эти соглашения позволяют иметь инструменты, которые могут использовать, повторно использовать, заменять и подключать Java Beans.

Требуются следующие условные обозначения:

  • В классе должен быть публичный конструктор по умолчанию (без аргументов). Это позволяет легко создавать экземпляры в рамках редактирования и активации.
  • Класс характеристики должен быть доступен с использованием получать, набор, является (может использоваться для логических свойств вместо get), к и другие методы (так называемые методы доступа и методы мутатора ) по стандарту соглашение об именовании. Это позволяет легко автоматизировать проверку и обновление состояния bean-компонентов в рамках фреймворков, многие из которых включают специальные редакторы для различных типов свойств. Сеттеры могут иметь один или несколько аргументов.
  • Класс должен быть сериализуемый. (Это позволяет приложениям и фреймворкам надежно сохранять, хранить и восстанавливать состояние bean-компонента независимо от ВМ и платформы.)

Пример кода

упаковка игрок;общественный учебный класс PersonBean орудия Ява.io.Сериализуемый {    /** Характеристики **/    частный логический покойный = ложный;    частный Список список;    / ** Свойство "имя", доступно для чтения / записи. * /    частный Нить имя = ноль;    / ** Конструктор без аргументов (не принимает аргументов). * /    общественный PersonBean() {    }    общественный Список getList() {        возвращаться список;    }	    общественный пустота Сет-лист(окончательный Список список) {        это.список = список;    }    /**     * Получатель свойства "имя".     */    общественный Нить getName() {        возвращаться имя;    }    /**     * Сеттер для свойства "имя".     *     * значение @param     */    общественный пустота Имя набора(окончательный Нить ценить) {        это.имя = ценить;    }    /**     * Получатель имущества «умершего»     * Другой синтаксис для логического поля (в отличие от get)     */    общественный логический isDeceased() {        возвращаться покойный;    }    /**     * Сеттер для собственности «умерший».     * значение @param     */    общественный пустота setDeceased(логический ценить) {        покойный = ценить;    }}

TestPersonBean.java:

импорт player.PersonBean;/** * Класс «TestPersonBean». */общественный учебный класс TestPersonBean {    /**     * Метод тестера "main" для класса "PersonBean".     *     * @param arguments     */    общественный статический пустота главный(окончательный Нить[] аргументы) {        окончательный PersonBean человек = новый PersonBean();        человек.Имя набора("Боб");        человек.setDeceased(ложный);        человек.Сет-лист(новый ArrayList());        // Вывод: «Боб [жив]»        Система.из.Распечатать(человек.getName());        Система.из.println(человек.isDeceased() ? " [покойный]" : " [живой]");    }}
 id ="человек" class ="player.PersonBean" сфера действия ="страница"/> имя ="человек" свойство ="*"/><html>    <body>        Имя:  имя ="человек" свойство ="имя"/> 
Покойный? имя ="человек" свойство ="покойный"/>
<br/> <форма имя ="beanTest" метод ="ПОЧТОВЫЙ" действие ="testPersonBean.jsp"> Введите имя: <ввод type ="текст" имя ="имя" размер ="50">
Выберите опцию: <выберите имя ="покойный"> <вариант значение ="ложный">Живой</option> <вариант значение ="истинный">мертв</option> </select> <ввод type ="Разместить" значение ="Проверить фасоль"> </form> </body></html>

Рекомендации

  1. ^ а б Блох, Джошуа (2008). Эффективная Java (Второе изд.). Эддисон-Уэсли. п.13. ISBN  978-0-321-35668-0.

внешняя ссылка