Понимание паттерна наблюдателя - PullRequest
2 голосов
/ 10 ноября 2011

Я создал небольшое приложение, в котором есть JSlider, который контролирует скорость объекта.Когда ползунок обнаруживает изменение в своем состоянии, скорость объекта изменяется соответствующим образом.Мне было интересно, если то, что я построил, использует шаблон наблюдателяВикипедия утверждает, что «Шаблон наблюдателя» - это шаблон проектирования программного обеспечения, в котором объект, называемый субъектом, поддерживает список своих зависимых, называемых наблюдателями, и автоматически уведомляет их о любых изменениях состояния, обычно вызывая один из их методов.в основном используется для реализации распределенных систем обработки событий ".В моем коде всякий раз, когда обнаруживается изменение в JSlider, автоматически выполняется небольшой фрагмент кода для изменения скорости объекта с помощью:

slider.addChangeListener(
            new ChangeListener(){
                public void stateChanged(ChangeEvent e){
                    horizSpeed = slider.getValue();
                    sliderTitle.setText("Current Speed: " + horizSpeed);
                }
            }
    );

Я не думаю, что он поддерживает список зависимых лиц, как вызывает Википедияно я не уверен.Если бы кто-нибудь мог просветить меня в тонкостях паттерна наблюдателя, я был бы очень признателен.Спасибо!

Ответы [ 2 ]

2 голосов
/ 10 ноября 2011

Наблюдатель также известен как публикация-подписка.Это имя может быть немного более объяснительным.

У вас есть наблюдатель, в настоящее время только один зарегистрированный клиент.Однако addChangeListener может зарегистрировать более одного слушателя.Представьте, хотите ли вы изменить цвет слайдера, когда он был на верхнем уровне.Вы бы хотели отделить это от изменения скорости.

1 голос
/ 10 ноября 2011

Slider является субъектом , а addChangeListener добавляет зависимого к своему списку зависимых .Это классический пример схемы наблюдателя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...