#include <iostream>
#include <stdlib.h>
using namespace std;
class Handler {
public:
Handler(Handler *handler) {
m_successor = handler;
}
virtual ~Handler() {
delete m_successor;
}
virtual void EventHandler(int id) = 0;
protected:
virtual void Next(int id) {
if (m_successor != NULL) {
m_successor->EventHandler(id);
}
}
Handler *m_successor;
};
class A_Handler : public Handler {
public:
A_Handler(Handler *handler) : Handler(handler) { }
virtual void EventHandler(int id) {
if (id == 1) {
cout << "A_Handler recv Event." << endl;
} else {
Next(id);
}
}
};
class B_Handler : public Handler {
public:
B_Handler(Handler *handler) : Handler(handler) { }
virtual void EventHandler(int id) {
if (id == 2) {
cout << "B_Handler recv Event." << endl;
} else {
Next(id);
}
}
};
int main(int argc, char **argv) {
Handler *handler = NULL;
handler = new A_Handler(handler);
handler = new B_Handler(handler);
if (argc != 2) {
return 0;
}
int event = atoi(argv[1]);
handler->EventHandler(event);
delete handler;
return 0;
}
参考サイト
最終更新:2011年11月19日 12:05