Qt的信号和插槽是发布订阅的形式吗?

jze*_*eda 7 qt publish-subscribe

我认为我没有在任何地方看到这种比较,但他们会被认为是相同的吗?如果没有,为什么不呢?

小智 17

它们非常相似,但有一点不同:

  • 信号/槽实现观察者模式,其中生产者具有对其订户的引用并且负责通知它们

  • 发布/订阅模式插入一个额外的调解员,即话题处理器,其解耦生产者和消费者(生产者没有知道谁将会使用消息)

一个主要结果是,在p/s范例中,您可以在同一主题上拥有多个生产者.

这是(可能)引用最多的关于p/s的文章: 发布/订阅的许多方面

  • +1,这是重要的技术差异。实际上,这意味着在ap / s体系结构中,您可以替换一个或多个生产者,而不会影响消费者(因为他们没有直接引用生产者)。这对于测试消费者逻辑非常有用(将生产者替换为“刺激”消费者的组件)。同样,您可以添加或替换消费者,生产者不在乎。非常适合测试生产者逻辑。 (2认同)