一个观察器的例子:(visual studio 编译运行)
观察器(观察者)模式:被观察者调用观察器的回调函数。
symbian中大量使用观察器。
在symbian中观察器都是M类(一个接口)。如MCoeControlObserver。使用如下:
//实现观察器
class CControObserver: public CCoeControl,public MCoeControlObserver
{
...........
public://from MCoeControlObserver
void HandleControlEventL(CCoeControl* aControl, TCoeEvent aEventType);
}
void CControObserver::HandleControlEventL(CCoeControl* aControl, TCoeEvent aEventType)
{
...........................
}
//设置observer为button的观察器,其中button为CAKnButton*型,observer为CControObserver*型
.................................
..................................
button = CAknButton::NewL( reader );
observer = CControObserver::NewL( );
button->SetObserver( observer );
.................................
..................................
操作button,即可对控件observer进行控制。
button是被观察者subject,操作button时,会执行其基类的某个函数(为上例中的Function函数),在该函数中调用其观察器的回调函数CControObserver::HandleControlEventL(为上例中的Callback函数)。
本文通过一个VisualStudio编译运行的示例介绍了观察器模式的基本原理。观察器模式中,被观察者在其状态改变时通知所有注册的观察者,观察者执行相应的回调函数。文中还展示了Symbian系统中观察器模式的具体应用。
1379

被折叠的 条评论
为什么被折叠?



