Symbian程序中的观察者模式

转载 2007年09月14日 16:19:00
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

08年用Python写的一个塞班S60V3上免费发短信的小程序

#-*-coding:utf-8-*- import appuifw2 as appuifw import e32 import urllib import key_codes import uitr...
  • cumtzly
  • cumtzly
  • 2014年11月20日 09:53
  • 2347

Symbian OS 源码下载方式

本文由 www.J2meGame.com 撰写,转载请说明。Symbian OS 源码下载方式,导航:近日Symbian OS开源,肯定有很多移动开发爱好者去下载Symbian系统代码。但是笔者发现S...
  • wag2765
  • wag2765
  • 2016年01月25日 16:41
  • 507

Symbian操作系统

Symbian操作系统    Symbian由摩托罗拉、西门子、诺基亚等几家大型移动通讯设备商共同出资组建的一个合资公司,专门研发手机操作系统。而Symbian操作系统的前身是EPOC,而EPOC...
  • baliguan163
  • baliguan163
  • 2014年07月15日 21:09
  • 406

音频播放处理(openal、dsound、waveout)

音量控制 WaveOut WaveOut在音量上是左右声道单独控制的。 waveOutSetVolume(HWAVEOUT,DWORD);可以设定指定设备的音量。这是左右声道一起设置的,其左右声道...
  • T20091
  • T20091
  • 2013年12月22日 19:56
  • 2599

Symbian之败,败在何方?

核心提示: 1月24日晚间,诺基亚宣布了一条令人遗憾的消息:将停产Symbian智能手机,去年发布的808 PureView成为这款 ... 1月24日晚间,诺基亚宣布了一条令人遗憾的消息:...
  • njcit
  • njcit
  • 2013年01月27日 21:16
  • 325

[记录]Symbian兴衰路

1980年,David Potter创立了Psion公司,该公司开发的EPOC系统最初用于移动设备,Symbian最初正是由Psion的EPOC操作系统发展而来。 1998年,Symbi...
  • uniquerhythm
  • uniquerhythm
  • 2013年02月17日 09:34
  • 230

Symbian系统究竟差在哪里?

Symbian(塞班)的衰落,绝不是因为Symbian落伍了。   首先,应当说,Symbian是一个优秀的嵌入式系统。Symbian是一个实时操作系统,是一个微内核系统,从设计的时候,就是为了能在...
  • hypercode
  • hypercode
  • 2013年02月04日 13:48
  • 351

Symbian上播放H264文件

上一篇写了关于在Symbian平台上实现H264编码的RTSP流播放的文章, 很多人给我发来了邮件,询问是否支持本地文件的播放。答案当然是可以了。   为了省事,我没有播放H264编码的AVI或者...
  • lifan_3a
  • lifan_3a
  • 2013年07月24日 02:01
  • 446

Symbian 智能手机操作系统综述

Symbian 智能手机操作系统综述 (这是根据自己的理解写的一篇综述,操作系统课程论文) 1、智能手机操作系统: 手机已渐渐成为人们日常生活不可或缺的东西,最初的手机只能用来打电话、收发短信。...
  • BoYueJiang
  • BoYueJiang
  • 2013年05月10日 00:09
  • 698

Symbian系统体系结构

Symbian系统体系结构  在symbian os上运行的四种软件   应用程序 application  服务     server  引擎     engine  内核     ker...
  • BoYueJiang
  • BoYueJiang
  • 2013年05月10日 00:09
  • 500
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Symbian程序中的观察者模式
举报原因:
原因补充:

(最多只允许输入30个字)