Механізми створення та обробки подій в java план лекції Подія – як засіб обміну інформацією


НазваМеханізми створення та обробки подій в java план лекції Подія – як засіб обміну інформацією
Дата конвертації24.02.2013
Розмір445 b.
ТипРішення


МЕХАНІЗМИ СТВОРЕННЯ ТА ОБРОБКИ ПОДІЙ В JAVA


План лекції

  • Подія – як засіб обміну інформацією.

  • Наслідки відокремлення джерела подій від слухача.

  • Шляхи вирішення проблеми.

  • Стандартні класи та інтерфейси.

  • Події об'єктів класу Dispatcher.



Подія

  • Подія - це якась дія користувача, додатку або системи, яка може викликати відповідні дії іншої програми.

  • Це своєрідний засіб передачі інформації від одних об'єктів до інших.

  • При цьому ми маємо справу - з об'єктом, який породжує подію (fires), - і об'єктом, який реагує на подію (listener).

  • Окрім того, сама подія теж є об'єктом.



Схема обробки події



Варіант, коли слухачі подій заздалегідь відомі

  • if (відбулася подія) {

  • слухач1.обробити_подію (подія);

  • слухач2.обробити_подію (подія);

  • слухач3.обробити_подію (подія);

  • }



А якщо джерело відокремлено від слухачів?



Наслідки відокремлення слухача подій від джерела

  • Під час створення джерела слухачі невідомі, а потім, код джерела події для слухача або взагалі недоступний, або змінювати його не можна, або небажано. До того ж, кожен слухач реагує на подію по своєму. Виникають проблеми: - як слухачеві дізнатися про подію? - як джерелу дізнатися про слухачів? - як врахувати особливості слухачів?



Шляхи вирішення проблеми

  • Для вирішення проблем спілкування між джерелом події та слухачами, потрібні зусилля обох сторін.

  • Але перш за все слід вирішити, що собою являє подія. Якщо мова йде про ООП, то, звичайно, це об’єкт, і в Java є відповідний клас.



Клас java.util.EventObject. Частина1

  • /**

  • * The root class from which all event state objects

  • * shall be derived. All Events are constructed

  • * with a reference to the object, the "source",

  • * that is logically deemed to be the object upon which

  • * the Event in question initially occurred upon.

  • * @since JDK1.1

  • */

  • public class EventObject implements java.io.Serializable {



Клас java.util.EventObject. Частина2

  • protected transient Object source;

  • public EventObject ( Object source ) {

  • this.source = source;

  • }

  • public Object getSource() {

  • return source;

  • }

  • public String toString() {

  • return getClass().getName() + "[source=" + source + "]";

  • }

  • }



Заходи джерела подій, що нададуть можливість реагувати на події

  • Створити стандартний інтерфейс спілкування із усіма слухачами. Інтерфейс визначає тип для слухача та має передбачати реалізацію методу реакції на подію.

  • Надати можливість слухачам повідомити про себе (зареєструватися).

  • Зберігати колекцію зареєстрованих слухачів.

  • Повідомляти зареєстрованим слухачам про виникнення події через стандартний інтерфейс, викликаючи відповідний метод.



Заходи слухачів, що надають можливість реагувати на події

  • Реалізувати стандартний інтерфейс спілкування із джерелом події, створивши метод реакції на подію.

  • Зареєструватися у джерела події.

  • або

  • Створити слухача події, що реалізує стандартний інтерфейс спілкування із джерелом події (handler).

  • Зареєструвати створеного слухача у джерела події.



Події диспетчера

  • Подія dispatcherStartEvent виникає на початку роботи диспетчера.

  • Подія changeTimeEvent виникає у разі зміну модельного часу.

  • Подія dispatcherFinishEvent виникає при закінченні роботи диспетчера.

  • (назви умовні, класи не створюються)



Стандартний інтерфейс для слухача події

  • package java.util;

  • /**

  • * Copyright 2004 Sun Microsystems, Inc. All rights reserved.

  • * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.

  • * A tagging interface that all event listener interfaces must extend.

  • * @since JDK1.1

  • */

  • public interface EventListener {

  • }



Інтерфейси для слухачів подій Диспетчера

  • public interface DispatcherStartListener extends EventListener {

  • void onDispatcherStart();

  • }

  • public interface ChangeTimeListener extends EventListener {

  • void onChangeTime(EventObject evt);

  • }

  • public interface DispatcherFinishListener extends EventListener {

  • void onDispatcherFinish();

  • }



Колекції для слухачів подій Диспетчера

  • private Vector dispatcherStartListeners;

  • private Vector changeTimeListeners;

  • private Vector dispatcherFinishListeners;



Метод для регістрації слухачів події dispatcherFinish

  • public synchronized void addDispatcherFinishListener( DispatcherFinishListener listener) {

  • if (dispatcherFinishListeners == null) {

  • dispatcherFinishListeners = newVector();

  • }

  • dispatcherFinishListeners.addElement(listener);

  • }



Метод для вилучення слухачів події dispatcherFinish

  • public synchronized void removeDispatcherFinishListener(

  • DispatcherFinishListener listener) {

  • if (dispatcherFinishListeners == null) {

  • return;

  • }

  • dispatcherFinishListeners.removeElement(listener);

  • }



Метод оповіщення слухачів про подію dispatcherFinish. Частина1

  • private void fireDispatcherFinishEvent() {

  • Vector targets = null;

  • synchronized (this) {

  • if (dispatcherFinishListeners != null) {

  • targets = (Vector) dispatcherFinishListeners.clone();

  • }

  • }



Метод оповіщення слухачів про подію dispatcherFinish. Частина2

  • if (targets != null) {

  • for (int i = 0; i < targets.size(); i++) {

  • DispatcherFinishListener target = (DispatcherFinishListener) targets

  • .elementAt(i); target.onDispatcherFinish();

  • }

  • }



Формування події DispatcherFinish

      • printToProtocol(" Диспетчер роботу завершив");
      • // Формування події DispatcherFinish
      • fireDispatcherFinishEvent();
      • }


Приклад використання події dispatcherFinish

  • getJButtonStartExperiment().setEnabled(false);

  • dispatcher.start();

  • dispatcher.addDispatcherFinishListener(

  • new DispatcherFinishListener(){

  • public void onDispatcherFinish() {

  • getJButtonStartExperiment() .setEnabled(true);

  • }

  • }

  • );



Схожі:

Механізми створення та обробки подій в java план лекції Подія – як засіб обміну інформацією iconКомп'ютерні мережі Комп'ютерна мережа
Мережі надають користувачам можливість не тільки швидкого обміну інформацією, але і спільної роботи на принтерах і інших периферійних...
Механізми створення та обробки подій в java план лекції Подія – як засіб обміну інформацією iconЛекція 5 План лекції
Підмножина потоків, що пов’язані з несанкціонованим доступом для ознайомлення з інформацією
Механізми створення та обробки подій в java план лекції Подія – як засіб обміну інформацією iconПлан лекції Клінічна актуальність теми
Немає патологічного стану організму, який би не проявлявся порушеннями обміну води
Механізми створення та обробки подій в java план лекції Подія – як засіб обміну інформацією iconСервлети це модулі, написані мовою Java і які виконуються на стороні сервера під керуванням спеціального програмного забезпечення сервера застосувань
Засоби створення сервлетів займають одне з найбільш важливих місць у платформі Java ee
Механізми створення та обробки подій в java план лекції Подія – як засіб обміну інформацією iconФізіологія кровоносних І лімфатичних судин план лекції: Основи гемодинаміки
Гемодинаміка розділ фізіології кровообігу, який вивчає причини, умови і механізми переміщення крові в серцево-судинній системі
Механізми створення та обробки подій в java план лекції Подія – як засіб обміну інформацією iconЕлектронна медична апаратура План лекції Загальна класифікація медичної техніки
Медична техніка машини, механізми, механічні пристрої, автомати і напівавтомати, що використовуються в медицині
Механізми створення та обробки подій в java план лекції Подія – як засіб обміну інформацією iconФізіологія гемодинаміки план лекції: Основи гемодинаміки
Гемодинаміка розділ фізіології кровообігу, який вивчає причини, умови і механізми переміщення крові в серцево-судинній системі
Механізми створення та обробки подій в java план лекції Подія – як засіб обміну інформацією iconІнформації про діяльність Євроклубу шляхом створення та відкриття куточка "Вікно в Європу" в облкомплексі
Створити умови для повноцінної діяльності Євроклубу Кіровоградського облкомплексу, пошуку та обміну інформацією, спілкування між...
Механізми створення та обробки подій в java план лекції Подія – як засіб обміну інформацією iconПлан лекції: План лекції
Суспільно-політичне та економічне становище України на початку XX ст. Україна в Першій Світовій війні
Механізми створення та обробки подій в java план лекції Подія – як засіб обміну інформацією iconФізіологія кровоносних судин. Кровотік в артеріальній системі план лекції: Основи гемодинаміки
Гемодинаміка розділ фізіології кровообігу, який вивчає причини, умови і механізми переміщення крові в серцево-судинній системі

Додайте кнопку на своєму сайті:
dok.znaimo.com.ua


База даних захищена авторським правом ©dok.znaimo.com.ua 2013
звернутися до адміністрації
dok.znaimo.com.ua
Головна сторінка