目录
概念
观察者模式(Observer Pattern)是C++中常用的一种设计模式,它定义了对象间的一种一对多的依赖关系。在这种模式中,当一个对象(被观察者,Subject)的状态发生改变时,所有依赖于它的对象(观察者,Observer)都会收到通知并自动更新。
这种模式的结构通常包括四个部分:抽象主题(Subject)、抽象观察者(Observer)、具体主题(ConcreteSubject)和具体观察者(ConcreteObserver)。
- 抽象主题(Subject):负责维护一个观察者列表,并提供添加、删除和通知观察者的接口。它并不知道具体的观察者是谁,只知道它们都实现了Observer接口。
- 抽象观察者(Observer):为所有的具体观察者定义一个接口,当得到主题的通知时,进行自我更新。
- 具体主题(ConcreteSubject):将有关状态存入各具体观察者对象。当具体主题的状态发生任何更改时,通知所有观察者。
- 具体观察者(ConcreteObserver):实现Observer所要求的更新接口,以便使本身的状态与主题的状态相协调。
观察者模式的优点包括:
- 满足“开-闭原则”:新添加的观察者类不需要修改主题类的代码,满足软件设计的开闭原则。
- 高内聚、低耦合:被观察者和观察者之间建立一个抽象的耦合,两者可以属于不同的抽象化层次,被观察者并不认识任何一个具体观察者,它只知道它们都有一个共同的接口。
- 支持广播通讯:被观察者对象可以同时向多个观察者对象传送信息,消息是一对多关系。
然而,观察者模式的一个缺点是没有相应的机制使观察者知道所观察的对象是怎么发生变化的,而只是知道对象发生了变化。
在C++中,观察者模式特别适用于GUI组件编程,允许不同的UI在不与其他对象类耦合的前提下,对逻辑层事件做出不同反应。
请注意,设计模式的选择和使用应根据具体的问题和场景来决定,每种设计模式都有其适用的场景和限制。
标签:Observer,--,主题,观察者,对象,具体,设计模式 From: https://www.cnblogs.com/yubo-guan/p/18037223