我已经建立了一个小应用程序,它有一个JSlider,可以控制对象的速度。当滑块检测到其状态发生变化时,对象的速度会相应地发生变化。我想知道我构建的是不是使用了观察者模式。维基百科指出,观察者模式“是一种软件设计模式,在这种模式中,称为主题的对象维护着它的从属对象列表,称为观察者,并自动通知它们任何状态的变化,通常是通过调用它们的方法之一。它主要用于实现分布式事件处理系统”。在我的代码中,每当检测到JSlider中的变化时,就会自动执行一小段代码来更改对象的速度,方法是:
slider.addChangeListener(
new ChangeListener(){
public void stateChanged(ChangeEvent e){
horizSpeed = slider.getValue();
sliderTitle.setText("Current Speed: " + horizSpeed);
}
}
);我不认为它像维基百科要求的那样维护着一份家属名单,但我不确定。如果有人能告诉我观察者模式的微妙之处,我将不胜感激。谢谢!
发布于 2011-11-10 06:37:54
Slider是主题,addChangeListener会将一个依赖项添加到其依赖项列表中。这是观察者模式的一个经典示例。
发布于 2011-11-10 06:40:05
观察者也称为发布-订阅。这个名字可能更有说服力。
您所拥有的是一个观察者,当前只有一个注册的客户端。但是,addChangeListener可以注册多个侦听器。想象一下,如果您想要在滑块处于高端时更改滑块的颜色。你会想把它和改变速度分开。
https://stackoverflow.com/questions/8072407
复制相似问题