我已经构建了一个小应用程序,它有一个控制对象速度的JSlider。当滑块检测到其状态发生变化时,对象的速度会相应变化。我想知道我构建的是否使用了观察者模式。维基百科指出,“观察者模式”是一种软件设计模式,其中一个称为主体的对象维护其依赖者列表,称为观察者,并通常通过调用其中一种方法自动通知它们任何状态变化。主要用于实现分布式事件处理系统“。在我的代码中,只要检测到JSlider中的更改,就会自动执行一小段代码以通过以下方式更改对象的速度:
slider.addChangeListener(
new ChangeListener(){
public void stateChanged(ChangeEvent e){
horizSpeed = slider.getValue();
sliderTitle.setText("Current Speed: " + horizSpeed);
}
}
);
我不认为它保留了维基百科所要求的家属列表,但我不确定。如果有人能够启发观察者模式的细微之处,我将非常感激。谢谢!
答案 0 :(得分:2)
Observer也称为发布 - 订阅。该名称可能更具解释性。
您拥有的是观察者,目前只有一个注册客户。但是,addChangeListener可以注册多个侦听器。想象一下,如果您想要在高端时更改滑块的颜色。你想把它与改变速度分开。
答案 1 :(得分:1)
Slider
是主题,addChangeListener
将依赖项添加到其依赖项列表。这是观察者模式的典型例子。