【发布时间】:2011-12-21 16:20:56
【问题描述】:
我很难准确理解什么是观察者模式,但我为我的项目生成了以下代码。它使用 SDL。我正在使用 boost 库来实现信号,从而实现我的观察者模式。这看起来正确吗?
/* This is setting up our signal for sending observations */
boost::signals2::signal<void (char, int, int)> sig;
/* Subjects the Observer will connect with */
sig.connect(&setChest);
sig.connect(&setNonTraverse);
sig.connect(&setEntry);
sig.connect(&setExit);
std::cout << "Waiting for user-interaction. Press on the 'X' to quit" << std::endl;
while ( !quit ) {
status = SDL_WaitEvent(&event); //wait for an event to occur
switch (event.type) { //check the event type
case SDL_KEYDOWN: //Check if a key was pressed.
key = SDL_GetKeyName(event.key.keysym.sym);
break;
case SDL_MOUSEBUTTONUP:
sig(key[0],event.button.x/32,event.button.y/32);
break;
case SDL_QUIT: // Click on the 'X' to close the window.
exit ( 1 );
break;
}
} //while
return true;
}
【问题讨论】:
-
维基百科的描述说:“观察者模式(发布/订阅模式的一个子集)是一种软件设计模式,其中一个称为主体的对象维护其依赖项列表,称为观察者,并自动通知他们任何状态变化,通常是通过调用他们的方法之一。”这不是我在做什么吗?不过感谢您的意见!
-
您的代码看起来不错,可以开始使用。它当然可以改进,但你在正确的轨道上。
标签: c++ observer-pattern