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

相关文章推荐

观察者模式(小程序实现)

观察者模式(通过继承Observable以及实现observer接口)简单实现,

Java Observer 观察者模式 程序 总结

观察者模式是对象的行为模式,又叫发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependen...
  • JYH1314
  • JYH1314
  • 2016年05月09日 15:09
  • 567

Android编程思想,面向对象程序设计第三篇——观察者模式

上一节我们讲到了单例模式,其实上一节的代码例子也用到了观察者模式。也就是用户信息发生变化的时候通知所有注册了用户信息监听接口的人。观察者模式就是这么一个角色,他管理者一类信息,并随时注意着这些信息的变...

观察者模式的程序实例C++

//实例源自http://hi.csdn.net/ocean181 ,主要做了点修正.#include #include #include using namespace std;class Obse...

Symbian OS:MVC 设计模式在 SymbianOS 应用程序中的应用分析

简介          MVC设计模式是在20世纪80年代发明的一种软件设计模式,至今已被广泛使用,后来被推荐为 Sun 公司 J2EE 平台的设计模式。     随着Web应用的商业逻辑包含...

观察者模式for android demo

  • 2017年09月30日 11:09
  • 22MB
  • 下载

Android基于观察者模式下载管理

  • 2017年11月08日 11:45
  • 459KB
  • 下载

程序设计模式-观察者模式

程序设计模式是人们在程序设计的manchang

Java的观察者模式

  • 2015年12月29日 21:59
  • 10KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Symbian程序中的观察者模式
举报原因:
原因补充:

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