现在我学会了使用Observers,我注意到了两个问题:
1 - 使用Observer Pattern通常只通知一个对象有关更改吗? 2 - 当只需要更新一个对象时,最好使用观察者或事件?或者有些情况下只需要一个通知,建议观察者更多?
答案 0 :(得分:2)
我没有将Observer和Events视为替代品,它不是或。当我们在Event Producer和Event Consumer之间建立订阅/事件关系时,我们正在使用Observer模式 - 请参阅Wikipedia article on Observer。
我认为你的问题更多的是我们是否真的需要观察者/事件,当生产者和消费者之间存在非常强的关系时,我们希望生产者了解其唯一的消费者。然后而不是需要
Define Event
Write Subscribe Method
Keep track of subscriptions
Write Unsubscribe Methos
Write Event Notification
我们只是
Write a dinnerIsReady(payload) method on consumer
Arrange for producer to know about consumer (perhaps because producer creates consumer)
consumer.dinnerIsReady(payload)
哪个工作少一些。 [在具有良好事件框架的环境中,也许不是很多更少的工作。]
如果你有几个消费者,那么观察者模式就非常重要。当你最初只有一个消费者时,去完整的订阅/发布模型可能会有点过分。相反,如果您只使用Payload / ConsumerInterface模型,则可以减少Producer和Consumer的耦合。
Consumer implements IDinnerIsReady
Publisher.registerConsumer(IDinnerIsReady c)
{
assert(no existing consumer);
myConsumer = c;
}
...
c.dinnerIsready();
...
我认为这是完全合理的。