Symbian程序中的观察者模式

Symbian程序中的观察者模式
作者:Lee 译    文章来源:newlc    更新时间:2007-3-26 10:56:50

Symbian程序中的观察者模式
在这个站点上有很多关于Symbian程序外表的文章,很少有关于架构设计的观点。在以下的文中中,我介绍一下在Symbian应用程序中的观察者模式,我会用一些有意义的类名来代表整个Symbian程序的设计流程。在这个应用程序中,将告诉你在一个Symbian程序中如何使用 Engine和前台,UI接口,和用户直接的交互。在文章中,我已经给了一种解决的方案。在接下来的文章种,我将介绍另外一种方法,通过内嵌类。让我们开始应用程序的引擎类和它的观察者,我们创建了一个观察者接口 MObserver,定义如下:
CODE:
class MObserver
{
public:
        virtual void CallbackFunction1() = 0;
};
接口,它有一个纯虚函数,它必须被一个创建类实现。在我们的例子中,Engine(引擎类)将实现它:
CODE:
class Engine : public MObserver
{
public:        Engine(CAppUi& aAppUi);
        void CallbackFunction1();//From MObserver
        void DoSomething();
        Subject&  GetSubject();
private:        Subject*  iSubject;
        CAppUi&  iAppUi;
};
从名字可以清晰的看出,Engine类有一个Subject类,他是实际上在后台工作的类;CAppUi 类是核心与视图的用户接口。引擎创建一个Subject类,通常在Symbian程序中,CAppUi 类是通过veiw类表现数据到用户接口的(UI)。
Subject类申明如下:
CODE:
class Subject
{
public:
        Subject(MObserver& aObserver);
        void DoSomething();
private:
        MObserver& iObserver;
};
很 明显,Subject类链接了它的观察者iObserver。Symbian程序在一般情况下,在后台通过一些异步函数,Subject类将继承至 CActive类而工作。这里有一个 DoSomething()将调用一些异步函数,这个函数也将调用MObserver中的CallbackFunction1()。 CallbackFunction1 函数将更新AppUi 应用程序或引擎和UI中相关的表现形式。因此让我们来看看CAppUi类的申明:
CODE:
class CAppUi
{
public:
        CAppUi();
        Engine& GetEngine();
        void PrintToUI(char* msg);
        virtual ~CAppUi();
private:
        Engine* iEngine;
};
AppUi类的作用是,创建应用程序的引擎。记住,应用程序和Engine已经循环的引用,整个的流程如下:
AppUi将创建引擎;
Engine创建Subject;
AppUi通过一些菜单命令调用Engine中的DoSometing函数;
Engine将委派一些任务通过Subject类的DoSometing函数;
Subject的DoSometing函数将通知通过CallbackFunction1创建Observer;
Subject的DoSometing函数看上去如下:
CODE:
void Subject::DoSomething()
{        //Call the Asynchronous function
        //Now Notify the Observer regarding this.
        iObserver.CallbackFunction1();
}
Observer中的这个回调函数将打印AppUi中消息通过函数PrintToUi。这个函数将呈现从Engine得到的消息到Veiw中。
希望这篇文章能讲清楚一些Symbian入门者对于如何使用UI的疑惑。

译文地址:http://www.symbianx.cn/viewthread.php?tid=2&extra=page%3D1
原文地址:http://www.newlc.com/Observer-Pattern-in-Symbian.html
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值