观察者模式和发布订阅模者式的区别
时间: 2024-01-02 11:21:08 浏览: 35
观察者模式和发布订阅模式都是常见的软件设计模式,它们的区别如下:
1.角色不同:观察者模式需要两种角色,即目标和观察者;而发布订阅模式需要三种角色,即发布者、事件中心和订阅者。
2.耦合度不同:观察者模式中的目标和观察者是直接关联的,耦合在一起;而发布订阅模式中,订阅者和发布者是没有直接关联的,通过事件中心进行关联,两者是解耦的。
3.灵活性不同:相比发布订阅模式,观察者模式不够灵活,因为目标和观察者是耦合在一起的,所以观察者模式需要同时引入目标和观察者才能达到响应式的效果。而发布订阅模式只需要因为事件中心,订阅者和发布者可以不在一处。
相关问题
观察者模式和发布订阅模式区别
观察者模式和发布订阅模式都是用于处理对象间的一对多关系,但它们有一些不同之处。
观察者模式中,有一个主题和多个观察者。主题维护一个观察者列表,并在状态变化时通知所有观察者。观察者通过注册到主题中来接收通知。观察者模式中,观察者知道主题,并直接从主题中接收通知。
发布订阅模式中,有一个消息代理或者称为消息中心,发布者向消息代理发布消息,订阅者从消息代理订阅消息。发布订阅模式中,发布者和订阅者互不知晓,他们只知道消息代理。发布者向消息代理发布消息,而不必知道哪些订阅者会收到该消息。同样地,订阅者也只需向消息代理订阅消息,而不必知道哪些发布者会发布该消息。
因此,观察者模式和发布订阅模式在实现方式上有所不同,前者更加简单,后者更加灵活。当需要简单的一对多关系时可以使用观察者模式,而当需要更加复杂的场景时可以选择发布订阅模式。
观察者模式和发布订阅区别
观察者模式和发布订阅模式都是一种用于对象间通信的模式,但它们之间存在一些区别。
观察者模式中,有一个被观察者对象和多个观察者对象。被观察者对象会在发生改变时通知所有的观察者对象,并且观察者对象之间没有直接的联系,它们只是通过被观察者对象进行通信。这个模式中,观察者对象的注册和注销是由被观察者对象控制的。
发布订阅模式中,有一个消息中心或事件通道,发布者将消息发布到该通道中,订阅者可以自由地订阅自己感兴趣的消息,并且可以自由地取消订阅。在这个模式中,发布者和订阅者之间没有直接的联系,它们只是通过消息中心进行通信。这个模式中,订阅者的注册和注销是由订阅者自己控制的。
因此,观察者模式是一种一对多的模式,而发布订阅模式是一种多对多的模式。同时,发布订阅模式更加灵活,因为它允许订阅者订阅自己感兴趣的消息,而不必关心消息的来源;而观察者模式只能让观察者观察被观察者对象的状态。