Java 观察和通知

Java 观察和通知,java,Java,我必须实现一个通知服务,并发送一条消息,其中包含一些关于音乐的新内容 public class FilterByMusic implements Observer { private String music; private Observable observe; public FilterByMusic(String music, Observable observe) { this.music = music; this.

我必须实现一个通知服务,并发送一条消息,其中包含一些关于音乐的新内容

    public class FilterByMusic implements Observer {

    private String music;
    private Observable observe;

    public FilterByMusic(String music, Observable observe) {
        this.music = music;
        this.observe = observe;
    }

    @Override
    public void update(Observable o, Object arg) {
        System.out.println(arg);
    }
}
我用这个方法创建了另一个扩展了Observable的类

    public void newMusicNotify() {
    //new music here.. 
    this.setChanged();
    this.notifyObservers(music);
    }
因此,如果有新的音乐,它会通知所有观察该物体的观察者。但现在我想有一个过滤器,它只发送一个消息给观察者,如果它是由一个特定的音乐,我在FilterByMusic中有一个参数。我有一个观察员,他希望所有的新音乐都得到通知,还有一个观察员,他只想要一个特定的音乐,因为他不喜欢所有类型的音乐,我怎么能做到呢


我感谢你们的帮助

我建议不要使用Java的oberver接口,而是自己做。通过这种方式,您将更加灵活。

我建议,不要使用Java的oberver接口,而是自己使用。这样,您将更加灵活。

如果您希望有多个可观察对象,请使用某种容器,如Map,即Map[rockObserver],并将其转换为方法updateObservable o,对象参数使用开关取决于音乐。

如果您希望有多个可观察对象,请使用某种容器,如Map,即Map[rockObserver],在方法updateObservable o中,Object arg use开关取决于音乐。

这不会回答问题这不会回答问题,因此它会向所有观察者发送通知,并在更新方法中处理过滤get。我认为如果音乐不是观测者希望在过滤器构造函数中给出的音乐,那么我不发送该消息,否则我发送它并在更新方法中打印它。有办法吗?感谢您在更新方法中可以使用,如果这个.music是像{//notify}@Michael这样的可观察对象,那么您可以将许多特定的可观察对象封装在一个BigObservable中。在bigObservable.addObserver中,订阅observer到您喜欢的specificObservable。这听起来不错,但我不知道如何准确地执行。目前,我有一个发送通知的惟一Observable和实现Observators的不同类。一个观察者应该获得所有新音乐的notifactions,另一个只能通过过滤获得新音乐。我认为你的解决方案可以帮助我,但我不知道如何。你能不能写一个例子,它会帮助我很多,因为它会发送通知给所有的观察者,并在更新方法中处理过滤。我认为如果音乐不是观测者希望在过滤器构造函数中给出的音乐,那么我不发送该消息,否则我发送它并在更新方法中打印它。有办法吗?感谢您在更新方法中可以使用,如果这个.music是像{//notify}@Michael这样的可观察对象,那么您可以将许多特定的可观察对象封装在一个BigObservable中。在bigObservable.addObserver中,订阅observer到您喜欢的specificObservable。这听起来不错,但我不知道如何准确地执行。目前,我有一个发送通知的惟一Observable和实现Observators的不同类。一个观察者应该获得所有新音乐的notifactions,另一个只能通过过滤获得新音乐。我认为你的解决方案可以帮助我,但我不知道如何。你能不能写一个例子,这对我很有帮助