Questions tagged «observer-pattern»

一种设计模式,在该设计模式中,称为对象的对象会维护其依赖项的列表(称为观察者),并通常通过调用其方法之一来自动将状态更改通知给他们。它是“四人帮”的行为设计模式之一。在实现上使用繁重的问题时使用此标记-标记实现所使用的代码语言。

7
委托:EventEmitter或可观察到的Angular
我正在尝试在Angular中实现类似委托模式的功能。当用户单击时nav-item,我想调用一个函数,该函数然后发出一个事件,而该事件又应由侦听该事件的其他某些组件处理。 这是场景:我有一个Navigation组件: import {Component, Output, EventEmitter} from 'angular2/core'; @Component({ // other properties left out for brevity events : ['navchange'], template:` <div class="nav-item" (click)="selectedNavItem(1)"></div> ` }) export class Navigation { @Output() navchange: EventEmitter<number> = new EventEmitter(); selectedNavItem(item: number) { console.log('selected nav item ' + item); this.navchange.emit(item) } } 这是观察部分: export class …

10
我们什么时候应该使用Observer和Observable?
面试官问我: 什么是Observer,什么Observable时候应该使用它们? 我并不了解这些术语,因此当我回到家并开始使用Google Observer和Google进行搜索时Observable,发现了来自不同资源的一些观点: 1)Observable是一个类,Observer是一个接口。 2)Observable该类维护一个Observers 列表。 3)当一个Observable对象被更新时,它调用其update()每个Observers 的方法来通知它已被更改。 我发现这个例子: import java.util.Observable; import java.util.Observer; class MessageBoard extends Observable { public void changeMessage(String message) { setChanged(); notifyObservers(message); } } class Student implements Observer { @Override public void update(Observable o, Object arg) { System.out.println("Message board changed: " + arg); } } public …

4
观察者,发布/订阅和数据绑定之间的区别
观察者模式,发布/订阅和数据绑定之间有什么区别? 我在Stack Overflow上进行了一些搜索,没有找到任何好的答案。 我已经相信数据绑定是一个通用术语,并且有多种实现它的方式,例如观察者模式或发布/订阅模式。通过观察者模式,观察者更新其观察者。使用发布/订阅,0个发布者可以发布某些类别的消息,0个订阅者可以订阅某些类别的消息。 还有其他实现“数据绑定”的模式吗?

7
确定在Rails after_save回调中更改了哪些属性?
我正在模型观察器中设置after_save回调,以仅在模型的发布属性从false更改为true时发送通知。既然方法改变了?仅在保存模型之前有用,我目前(但未成功)尝试这样做的方式如下: def before_save(blog) @og_published = blog.published? end def after_save(blog) if @og_published == false and blog.published? == true Notification.send(...) end end 有没有人对处理此问题的最佳方法有任何建议,最好使用模型观察者回调(以免污染我的控制器代码)?

3
观察者设计模式与“听众”
在我看来,GOF中描述的Observer设计模式与各种工具包中的Listeners确实是同一回事。概念之间是否有区别,或者侦听器和观察者确实是同一回事。 (我并不是在寻找任何特定的计算机语言实现,我只是想从设计的角度理解差异(如果有的话)。是的,我知道SOF中类似问题的答案有几个,但它们都是基于问题的有关特定语言的特定问题-我在寻找设计答案,而不是语言答案。)



8
介体与观察者的面向对象设计模式
为了解决我的一些问题,我一直在阅读《四人帮》,并遇到了Mediator模式。 我之前在项目中使用Observer来制作一些GUI应用程序。我有点困惑,因为我发现两者之间没有太大区别。我浏览找到了区别,但没有找到适合我的查询的答案。 有人可以帮我用一个很好的例子来区分两者吗?

12
作为弱引用的侦听器的优缺点
将侦听器保留为WeakReferences的利弊是什么? 当然,最大的“专业版”是: 将侦听器添加为WeakReference意味着侦听器无需费心“删除”自身。 更新资料 对于那些担心侦听器仅引用对象的人,为什么不能有2个方法addListener()和addWeakRefListener()? 那些不关心删除的人可以使用后者。

12
观察者模式与事件驱动方法之间的区别
我总是发现观察者模式几乎与通常的事件驱动方法相似。实际上,我几乎相信它们实际上是指同一事物的不同名称。它们都使用相似的概念作为侦听器,甚至在实现中,它们几乎是同一件事,那就是具有回调方法/函数来执行操作。至少在Java中是这样。 用其他语言(如Actionscript / Flex)表示,事件对用户更友好,并且看起来似乎不仅仅是观察者模式定义的事情。但是,这些概念听起来是一样的。 但这是真的吗?观察者模式与通常的事件驱动编程风格一样吗?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.