Tag: 观察者模式

你将如何在Ruby on Rails应用程序中使用rSpectesting观察者?

假设你在一个Ruby on Rails应用程序中有一个ActiveRecord :: Observer – 你如何用rSpectesting这个观察者?

如何在symfony2中创build自定义事件

我想要创build一个名为user_logged自定义事件,以便我可以将侦听器附加到这些事件。 每当用户login时,我都想执行一些function。

我如何从后台服务更新Android活动中的信息

我试图创build一个简单的Android应用程序,它具有一个ActivityList的信息,当应用程序启动时,我打算启动一个将不断计算数据的服务(它将会改变),我希望ActivityList与该服务正在计算的应用程序的生活数据。 我如何设置我的活动来监听服务? 这是解决这个问题的最好方法吗? 例如,如果您想象一个股票价格列表 – 数据将被定期更改,并需要与(不断)计算/获取数据(在我的情况下)服务同步。 提前致谢

耙子任务期间closures观察者的简单方法?

我在我的应用程序中使用restful_authentication。 我使用rake任务创build了一组默认用户,但每次运行任务时都会发送激活电子邮件,因为与我的用户模型关联的观察者。 我在创build用户时设置了激活字段,因此不需要激活。 任何人都知道在运行rake任务时绕过观察者的简单方法,以便在保存用户时不会发送电子邮件。 谢谢。

Publisher-subscriber vs Observer

我试图把观察者devise模式作为调度DP的主要事件。 对我来说,观察者DP只是pub-sub DP的一个子集。 这些是我可以列举的两个主要区别点: 在观察者DP中,没有太多的消息传递正在进行。 观察者等待某个事件被触发,当事件触发时,通知观察者。 另一方面,Pub-sub在很大程度上依赖于消息传递。 在观察员DP中,观察员事先知道收到通知后会发生什么,而发布者DP则可以发布任何东西作为消息(不pipe怎样,事件和消息之间的另一个区别)。 观察者是在应用程序的边界之间实现的。 Pub-sub是更多的跨应用程序通信模式。 最后但并非最不重要的一点,在pub-sub DP中,有一个发行人,经纪人和订户。 但观察员DP只利用经纪人和订户(观察员)。 这份清单是详尽的还是缺less重要的一点?

观察者模式和事件驱动方法之间的区别

我总是发现观察者模式几乎类似于通常的事件驱动方法。 实际上,我几乎相信它们实际上是指同一事物的不同名称。 它们都使用类似的概念来作为一个监听器,甚至在实现中,它们几乎是一样的,那就是有一个callback方法/函数来执行一个动作。 这至less在Java中。 在其他语言中说,Actionscript / Flex,事件更加用户友好,可能看起来不仅仅是观察者模式定义。 但是,这些概念听起来是一样的。 但这是真的吗? 观察者模式与通常的事件驱动编程风格是一样的吗?

C#:事件或观察者界面? 优点缺点?

我有以下(简化): interface IFindFilesObserver { void OnFoundFile(FileInfo fileInfo); void OnFoundDirectory(DirectoryInfo directoryInfo); } class FindFiles { IFindFilesObserver _observer; // … } …我有矛盾 这基本上是我用C ++写的,但C#有事件。 我是否应该更改代码以使用事件,还是应该让它独立? 与传统的观察者界面相比,事件的优缺点有哪些?

Rails 3:如何在观察者中识别after_commit动作? (创build/更新/销毁)

我有一个观察员,我注册了一个after_commitcallback。 如何判断在创build或更新后是否被解雇? 我可以告诉一个项目被要求item.destroyed?销毁item.destroyed? 但#new_record? 自从该项目被保存以来不起作用。 我打算通过添加after_create / after_update来解决它,并执行像@action = :create内部@action = :create和检查@action在after_commit ,但似乎观察者实例是一个单身人士,我可能只是覆盖一个值, after_commit 。 于是我以一种更丑陋的方式解决了这个问题,把action放在一个基于after_create / update的item.id的地图上,并在after_commit上检查它的值。 真的很丑。 有没有其他的方法? 更新 正如@ tardate所说, transaction_include_action? 是一个很好的指示,虽然这是一个私人的方法,在观察者应该用#send访问。 class ProductScoreObserver < ActiveRecord::Observer observe :product def after_commit(product) if product.send(:transaction_include_action?, :destroy) … 不幸的是, :on选项在观察者中不起作用。 只要确保你testing了你的观察者的地狱(如果你使用use_transactional_fixtures查找test_after_commit gem),所以当你升级到新的Rails版本时,你会知道它是否仍然有效。 (testing3.2.9) 更新2 现在我使用ActiveSupport :: Concern和after_commit :blah, on: :create而不是观察者:: after_commit :blah, on: :create在那里工作。

观察者devise模式与“听众”

在我看来,GOF中描述的Observerdevise模式与在各种工具包中发现的Listener是一样的。 这些概念之间是否有区别,或者是听众和观察者真的是一回事。 (我不是在寻找任何特定的计算机语言实现,我只是想从devise的angular度来理解差异(如果有的话)。是的,我知道SOF有类似的问题有几个答案,但是它们是根植的在关于特定语言的具体问题 – 我正在寻找devise答案,而不是语言答案。)

确定Rails after_savecallback中哪些属性发生了变化?

我在模型观察者中设置after_savecallback,只有当模型的发布属性从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 有没有人有任何build议,以最好的方式来处理,最好使用模型观察callback(以免污染我的控制器代码)?