首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >了解观察者模式

了解观察者模式
EN

Stack Overflow用户
提问于 2011-11-10 06:06:07
回答 2查看 544关注 0票数 2

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

代码语言:javascript
复制
slider.addChangeListener(
            new ChangeListener(){
                public void stateChanged(ChangeEvent e){
                    horizSpeed = slider.getValue();
                    sliderTitle.setText("Current Speed: " + horizSpeed);
                }
            }
    );

我不认为它像维基百科要求的那样维护着一份家属名单,但我不确定。如果有人能告诉我观察者模式的微妙之处,我将不胜感激。谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-10 06:37:54

Slider是主题,addChangeListener会将一个依赖项添加到其依赖项列表中。这是观察者模式的一个经典示例。

票数 1
EN

Stack Overflow用户

发布于 2011-11-10 06:40:05

观察者也称为发布-订阅。这个名字可能更有说服力。

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8072407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档