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>
Рекомендации
- ^ а б Блох, Джошуа (2008). Эффективная Java (Второе изд.). Эддисон-Уэсли. п.13. ISBN 978-0-321-35668-0.