了解观察者模式

时间:2011-11-09 22:06:07

标签: java language-agnostic observer-pattern

我已经构建了一个小应用程序,它有一个控制对象速度的JSlider。当滑块检测到其状态发生变化时,对象的速度会相应变化。我想知道我构建的是否使用了观察者模式。维基百科指出,“观察者模式”是一种软件设计模式,其中一个称为主体的对象维护其依赖者列表,称为观察者,并通常通过调用其中一种方法自动通知它们任何状态变化。主要用于实现分布式事件处理系统“。在我的代码中,只要检测到JSlider中的更改,就会自动执行一小段代码以通过以下方式更改对象的速度:

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

我不认为它保留了维基百科所要求的家属列表,但我不确定。如果有人能够启发观察者模式的细微之处,我将非常感激。谢谢!

2 个答案:

答案 0 :(得分:2)

Observer也称为发布 - 订阅。该名称可能更具解释性。

您拥有的是观察者,目前只有一个注册客户。但是,addChangeListener可以注册多个侦听器。想象一下,如果您想要在高端时更改滑块的颜色。你想把它与改变速度分开。

答案 1 :(得分:1)

Slider主题addChangeListener将依赖项添加到其依赖项列表。这是观察者模式的典型例子。