我可以像Java中的Notification一样编写一些东西吗?

时间:2012-03-14 07:13:01

标签: java objective-c

在Objective-C中,我使用Notification来完成一些任务,这需要一些时间来处理。我可以听通知,直到它准备好了...... 例如:

  [[NSNotificationCenter defaultCenter] addObserver:objectB
                                           selector:@selector(objectReceived:)
                                               name:@"objectATasks"
                                             object:nil];
  [objectA doALongProcess]; 

当objectA完成任务时,将触发@“objectATasks”,并将调用objectB的objectReceived :.在java中有类似的东西/概念吗?感谢

3 个答案:

答案 0 :(得分:3)

您可以在java

中使用Observer设计模式

答案 1 :(得分:2)

似乎您正在使用观察者模式,当然您也可以在Java中实现它,看看here

答案 2 :(得分:1)

最接近“stock”Java的是Future,但这不允许你添加延续。您可能希望使用ListenableFuture中的Guava界面及其addListener方法。然后,您可以使用MoreExecutors创建ListeningExecutorService - 您向其提交任务,然后返回ListenableFuture

(使用它而不是滚动自己的Observer模式实现的关键在于它已经以专门为这种用例设计的方式为您完成,对正在完成的任务做出反应 - 而不是各种其他类型的观察者实现,可能只是对属性变化等作出反应而不考虑线程安全性。为什么在聪明人已经为你完成它时设计自己的API?)