这个就是设计模式的观察者模式,简单地模拟一下它:
#include <iostream>
class TimerHandler;
class Timer {
public:
Timer() {
handler_ = 0;
}
public:
void SetHandler(TimerHandler *handler) {
handler_ = handler;
}
void Timeout();
private:
TimerHandler *handler_;
};
class TimerHandler {
public:
virtual void OnTimer() = 0;
};
void Timer::Timeout() {
handler_->OnTimer();
}
class SomeTimer : public TimerHandler {
public:
virtual void OnTimer() {
std::cout<< "sometimer" << std::endl;
}
};
int main() {
Timer timer;
SomeTimer sometimer;
timer.SetHandler(&sometimer);
timer.Timeout();
return 0;
}
#include <iostream>
class TimerHandler;
class Timer {
public:
Timer() {
handler_ = 0;
}
public:
void SetHandler(TimerHandler *handler) {
handler_ = handler;
}
void Timeout();
private:
TimerHandler *handler_;
};
class TimerHandler {
public:
virtual void OnTimer() = 0;
};
void Timer::Timeout() {
handler_->OnTimer();
}
class SomeTimer : public TimerHandler {
public:
virtual void OnTimer() {
std::cout<< "sometimer" << std::endl;
}
};
int main() {
Timer timer;
SomeTimer sometimer;
timer.SetHandler(&sometimer);
timer.Timeout();
return 0;
}