![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| sith |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 11.2.2007 Репутация: нет Всего: 1 |
есть такая задача... нужно контролировать изменение значения переменной... как написать такой прослушивтель...
-------------------- Там где ты ставишь глупые смайлики, я вбиваю восклицания знаки!!! |
|||
|
||||
| polosatij |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 22.2.2004 Где: Stuttgart<-> ;Karlsruhe, Germany Репутация: 1 Всего: 8 |
1. где 2. опиши задачу поконкретнее |
|||
|
||||
| sith |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 11.2.2007 Репутация: нет Всего: 1 |
хорошо... грубо говоря дело такое...
... есть клиент есть сервер... ... хочеться что бы они работали по событийному принципу... тоесть произошло событие(отправка/прием, разрыв соединнения и так далее) тогда они выполняют какие то действия... -------------------- Там где ты ставишь глупые смайлики, я вбиваю восклицания знаки!!! |
|||
|
||||
| chief39 |
|
|||
![]() карманная тигра ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1631 Регистрация: 20.5.2005 Где: Киев Репутация: 15 Всего: 77 |
Итого, есть два варианта событий:
поллинг(периодическое опрашивание) коллбэк(явное уведомление слушателя о событии через предоставленную точку доступа) Поллинг может осуществляться или по времени(раз в секунду, etc.) или по необходимости(я использую кэш курсов валют, в момент очередного использования делаю запрос не изменилось ли что-то в БД, т.е. "не произошло ли событие") Коллбэк - это, к примеру, метод в твоём ядре, которое должно узнавать о событии. Когда событие порисходит, то его виновник или исполнитель вызывает этот метод. Есть риск что в очередном исполнителе/инициаторе события можешь забыть его вызвать. Определись что хочешь, опиши список событий, которые надо отслеживать, опиши как можно вообще вычислить наступления всех событий в твоём случае(что за коннекшны, кем реализованы, как происходит разрыв и где инфа хранится) опиши требования к событийности: немедленный отзыв с синхронизацией и недопущение когда хвост впереди головы: "сначала уволился, а потом написал заявление на увольнение", просто запись событий в лог и отложенное выполнение действий по каждому факту события, etc А пока просто понятно что тебе нужно "что-то эдакое, шоп ездило...". Ессно, никто не посоветует что лучше ставить на это "нечто": 13 или 15 дюймовые диски -------------------- Люди - это свечи. Они либо горят, либо их - в жопу!(с) |
|||
|
||||
| hamsterKSU |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 401 Регистрация: 20.10.2006 Где: Украина, Херсон Репутация: 1 Всего: 11 |
в большинстве книг в разделе "События" есть подраздел "пишем свое событие" там все написано.
ну а обших чертах так: 1. у тя в класе есть список слушателей события. 2. есть функция типа FireMyEvent(MyEvent e) где происходит вызов метода слушателя, который реализовал твой интерфейс слушателя 3. в методе setXXX() вызываешь FireMyEvent и на этом все Это сообщение отредактировал(а) hamsterKSU - 2.4.2007, 13:25 |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 1 Всего: 260 |
не совсем понятно, что в данном случае переменная и при чем тут "обрыв соединения и так далее". если в общем виде, то изменение значения переменной можно отловить, если от "простых" типов вроде int перейти к классам с getter'ом и setter'ом: тогда ты точно будешь иметь инфо о изменении значения без "прослушивания", как процесса периодического запроса значения + сравнения.
|
|||
|
||||
| sith |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 11.2.2007 Репутация: нет Всего: 1 |
... конкретики так конкретики...
... есть класс клиента... в нем создаеться обьект GUI... при нажатии кнопки должно устанавливаться соединение с сервером... но я не хочу что бы в гуи делались какие либо действия по установке соединения... то есть клиент должен прослушивать состояние кнопки "установить соединение"... я предпологал так что в гуи будет поле boolean connect в которое будет записываться значение true/false в зависимости от того нажата кнопка или нет... а клиент в цикле будет вызывать метод гуи isConnect, но меня смущает этот цикл... не хочеться связываться с зацикливанием... мне кажеться что есть более простой и эффективынй способ... -------------------- Там где ты ставишь глупые смайлики, я вбиваю восклицания знаки!!! |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 1 Всего: 260 |
разве ГУИ и так не на стороне клиента? не совсем понятна эта фраза. вместо реакции на событие на клиенте, ты хочешь делать реакцию на событие в клиенте же? но только более извращенным способом? или тебе надо динамически менять список обработчиков? так есть паттерн "Очередь" - можно при помощи его сделать динамическое подключение/отключение обработчиков... Или мотивация другая? |
|||
|
||||
| LSD |
|
||||||||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Создание собственных событий
При разработке приложений часто бывает нужно реализовать обработку неких событий. В Java cтандарным способ создания модели обработки событий, является метод описаный в спецификации JavaBeans. Создадим собственный класс описывающий событие My. Обычно его наследуют от EventObject, а имя ИмяСобытияEvent.
Создадим интерфейс слушателя. Тот кто желает получать уведомления о событиях, должен будет реализовать этот интерфейс. Имя интерфейса ИмяСобытияListener.
в данном случае мы описали два метода, первый будет вызываться до того как событие My произойдет, второй после. Теперь опишем класс который будет выполнять некую работу и оповещать всех заинтересованных слушателей. Класс должен содержать методы: addИмяСобытияListener, getИмяСобытияListeners и removeИмяСобытияListener. Так же обычно создают вспомогательные методы fireXXX, для того чтобы было удобней оповещать слушателей.
А теперь проверим как это все вместе работает:
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
||||||||
|
|||||||||
| sith |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 11.2.2007 Репутация: нет Всего: 1 |
мда... солидно...
... попробую уточнить.. ибо мне не все здесь понятно... как реализовать такую задачу... ... мне нужно что бы слушатель следил за приходом обьектов по сети... обьект пришел... слушатель выбарсывает флаг и перадет обьект нужному методу... как это сделать... используя выше упомянутый принцип... -------------------- Там где ты ставишь глупые смайлики, я вбиваю восклицания знаки!!! |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Слушатель должен следить по сети, или объекты приходят по сети? -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| sith |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 11.2.2007 Репутация: нет Всего: 1 |
обьекты приходят по сети через сокеты... я читаю из входного потока... а слушатель должен отлавливать этот момент и производить дальнейшие действия...
-------------------- Там где ты ставишь глупые смайлики, я вбиваю восклицания знаки!!! |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
После того как прочитал объект вызывай соответсвующий fireXXX() метод.
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| sith |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 11.2.2007 Репутация: нет Всего: 1 |
ну не понятно мне... б..я
... выкладываю свои исходники... ...
... как в главном методе, если я все сделал правильно вызвать обработчик событий... -------------------- Там где ты ставишь глупые смайлики, я вбиваю восклицания знаки!!! |
||||||
|
|||||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |