当前位置: 首页 > 面试题库 >

为什么属性更改监听器而不是可观察的

印瑾瑜
2023-03-14
问题内容

我一直在类设计方面遇到问题,直到我发现了可观察的(使用观察者设计模式),因此使用它创建了一个小型应用程序,从而解决了我的问题。我为使用一个好的原则解决问题感到高​​兴和自豪。

为什么建议张贴者不要使用可观察的,而要告诉他们使用propertychangelistenr?使用observable是否有任何问题?

问候


问题答案:

观察者和侦听器模式非常相似。但是观察者有一个弱点:所有可观察的事物都是相同的。您必须实现基于的逻辑instanceof并将对象转换为具体类型为Observable.update()方法。

听众是不同的。侦听器类型很多。例如鼠标侦听器,键盘侦听器等。每个侦听器都有几种回调方法(即keyPressed()keyReleased()等等)。因此,您无需在事件处理程序中实现应回答“是我的事件”这一问题的逻辑。

我认为这就是为什么听众模型更可取的原因。



 类似资料:
  • 在JavaScript中是否可以监听属性值的更改?例如: 我想响应属性中的任何更改。 我已经阅读了对象,以及该对象的替代对象(包括使用动画事件的对象)。据我所知,它们是关于实际DOM的更改。我更感兴趣的是对一个特定DOM元素的属性更改,所以我不认为仅此而已。当然,在我的实验中,这似乎不起作用。 我希望在没有jQuery的情况下这样做。 谢谢

  • 我是JavaFX新手,已经开始转换用Swing编写的定制组件。作为最佳实践,我总是检查事件侦听器(PropertyChangeListener、MouseListener、ActionListener等)是否。)已经包含在目标对象的侦听器中,以确保同一个侦听器不会被添加两次。我试图用JavaFX做同样的事情,但是找不到任何访问侦听器列表的方法(例如,运行list.contains(listener

  • 问题内容: 我只是阅读了watch()方法的Mozilla文档。它看起来非常有用。 但是,我找不到与Safari类似的东西。既不是Internet Explorer。 您如何管理跨浏览器的可移植性? 问题答案: 我不久前为此创建了一个小object.watch垫片。它适用于IE8,Safari,Chrome,Firefox,Opera等。

  • 问题内容: 是否可以“监视”指令上的ui更改?像这样的东西: 问题答案: 是。您可以使用,如果你在属性利用插值。 但是,如果这不是一个插值属性,并且您希望它可以从应用程序中的其他位置更改(绝对不建议这样做,请阅读Common Pitfalls ),那么函数可以返回: 无论如何,对您来说最好的方法可能是更改更改元素类的代码。它何时更改?

  • Observable & Observer 既是可监听序列也是观察者 在我们所遇到的事物中,有一部分非常特别。它们既是可监听序列也是观察者。 例如:textField的当前文本。它可以看成是由用户输入,而产生的一个文本序列。也可以是由外部文本序列,来控制当前显示内容的观察者: // 作为可监听序列 let observable = textField.rx.text observable.subs

  • 我做了一个程序,动态地从一个面板获取数据,但是我的代码需要用户点击输入按钮来更新数据。有没有一个更改监听器或其他监听器可以在任何时候更新Jtext field中的数据?谢谢!