Java 一个观察者对多个主题的正确设计模式
在观察者模式中,主体和观察者之间通常存在一对多的关系(有一个主体和多个观察者) 但我有一个问题,在我的实现中,有许多主题(例如:a,B,C)是返回对象,但只有一个观察者(例如:O)将这些主题的输出放入队列并逐个处理它们Java 一个观察者对多个主题的正确设计模式,java,oop,design-patterns,observer-pattern,Java,Oop,Design Patterns,Observer Pattern,在观察者模式中,主体和观察者之间通常存在一对多的关系(有一个主体和多个观察者) 但我有一个问题,在我的实现中,有许多主题(例如:a,B,C)是返回对象,但只有一个观察者(例如:O)将这些主题的输出放入队列并逐个处理它们 我可以使用什么样的设计模式/范例?如果需要使用队列,可以使用生产者/消费者模式 观察者模式的不同之处在于,观察者通常知道可观察对象。而在生产者/消费者模式中,观察对象(对象、信息、事件的生产者)和观察者(消费者)是完全解耦的。 无论有多少(甚至没有)生产商在场,消费者都不会受到影
我可以使用什么样的设计模式/范例?如果需要使用队列,可以使用生产者/消费者模式 观察者模式的不同之处在于,观察者通常知道可观察对象。而在生产者/消费者模式中,观察对象(对象、信息、事件的生产者)和观察者(消费者)是完全解耦的。 无论有多少(甚至没有)生产商在场,消费者都不会受到影响 当然,另一个区别是,消费者必须主动轮询队列
此模式的“挑战”是访问两端队列时的正确同步。当然也有一些库可以处理这个问题。如果需要使用队列,可以使用生产者/消费者模式 观察者模式的不同之处在于,观察者通常知道可观察对象。而在生产者/消费者模式中,观察对象(对象、信息、事件的生产者)和观察者(消费者)是完全解耦的。 无论有多少(甚至没有)生产商在场,消费者都不会受到影响 当然,另一个区别是,消费者必须主动轮询队列
此模式的“挑战”是访问两端队列时的正确同步。但是当然有一些库来处理这个问题。嗨,Jonny,是的,它涵盖了我98%的问题,除了在observer中实现que之外。也许是一种反应式编程解决方案,其中主体发出事件流,而observer将它们合并到一个统一的流中。我偏爱,但也有其他反应库。很抱歉这么简短的评论,我没有时间写一个合适的答案。我会查一查约翰。你的评论很有价值,尽管它很短。嗨,Jonny,是的,它涵盖了我问题的98%,除了observer中的que实现。也许是一种反应式编程解决方案,其中主体发出事件流,而observer将它们合并到一个统一的流中。我偏爱,但也有其他反应库。很抱歉这么简短的评论,我没有时间写一个合适的答案。我会查一查约翰。你的评论很有价值,虽然很短。你好,沃尔夫,我想这就是我要找的。我发现BlockingQueue也是一个很好的例子。谢谢嗨,狼,我想这就是我要找的那个。我发现BlockingQueue也是一个很好的例子。谢谢