3. 观察者模式(Observer Pattern):用于实现客房状态的观察和通知功能。当客房状态发生改变时,可以通知相关观察者,例如前台接待员或客房清洁人员。
我们首先定义了抽象的观察者类Observer
,其中声明了一个纯虚函数update()
,用于在主题状态发生改变时通知观察者。然后,定义了具体的观察者类RoomStatusObserver
,实现了update()
函数,输出观察者收到通知的信息。
接下来,我们定义了抽象的主题类Subject
,其中声明了添加观察者、移除观察者和通知观察者的纯虚函数。然后,我们定义了具体的主题类RoomStatusSubject
,实现了这些纯虚函数,以及一个额外的changeRoomStatus()
函数,用于模拟房间状态发生变化时通知观察者。
在主函数中,我们创建了两个观察者对象和一个主题对象,然后注册观察者到主题中。接着,我们调用changeRoomStatus()
函数模拟房间状态发生变化,并通过notifyObservers()
函数通知观察者。之后,我们移除了一个观察者,再次调用changeRoomStatus()
函数,观察到只有一个观察者收到了通知。
#include <iostream>
#include <vector>
// 抽象观察者类
class Observer {
public:
virtual void update() = 0;
};