【发布时间】:2021-10-21 10:46:18
【问题描述】:
在观察者模式中,即使我只需要一个Observer,Subject 是否应该有一个 Observers 的集合?我看到的每个使用观察者模式的图表或应用程序都有很多Observers。如果它只有一个Observer,它是否称为观察者模式?
【问题讨论】:
标签: design-patterns observer-pattern
在观察者模式中,即使我只需要一个Observer,Subject 是否应该有一个 Observers 的集合?我看到的每个使用观察者模式的图表或应用程序都有很多Observers。如果它只有一个Observer,它是否称为观察者模式?
【问题讨论】:
标签: design-patterns observer-pattern
来自 GoF 书籍第 295 页,
任意数量的 Observer 对象都可以观察一个主题。
这就是为什么您会在每个示例中看到一组观察者。一个主题支持多个;但是,它不需要超过一个。 “任何数字”包括数字 1。
【讨论】:
是的,完全没问题。就像在 MVC 中一样,表示层/应用程序外观层中的对象可能是唯一侦听特定域对象的对象。
请记住主题和观察者的规范 - 那里没有提到集合。 Observer 有一个 update() 方法,Subject 有一个 register() 方法。而已!集合是一个实现细节。 :)
【讨论】: