251114 thinking observer
1. 什么是观察者模式?
观察者模式(Observer Pattern)用于在对象状态变化时,通知依赖它的多个观察者,实现一种一对多的订阅关系。被观察者只负责发布事件,不关心有多少观察者、它们如何处理,达到发布方与订阅方的解耦。
2. 为什么需要观察者模式?
当一个对象的变化需要联动多个组件时,若直接在对象内部逐个调用这些组件,将产生紧耦合和复杂的依赖。当组件增删或行为变化时,被观察者也不得不调整。通过观察者模式,我们将事件的发布与处理分离:被观察者只负责发出信号,观察者各自处理,从而降低耦合、提高扩展性。
3. 观察者模式的实现(go)
1 | type Observer interface { |
客户端代码如下:
1 | func main() { |
输出:
1 | [A] price_changed: 42 |
类图:
classDiagram
class subject {
<<interface>>
+Register(o observer)
+Unregister(o observer)
+Notify(event,data)
}
class concreteSubject {
+Register(o observer)
+Unregister(o observer)
+Notify(event,data)
}
class observer {
<<interface>>
+Update(event,data)
}
class concreteObserver {
+Update(event,data)
}
subject <|.. concreteSubject
observer <|.. concreteObserver
concreteSubject o--> observer : manages
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Elian's blog page!