Symbian 观察者模式

 

l         概念:

观察者模式是把目标对观察者的依赖进行抽象:使目标只知道自己有若干观察者,但不知道这些观察者具体是谁,可能有多少个;当目标状态改变时只要给这些观察者一个通知,不必作更多的事情。这样目标对观察者的依赖就达到了抽象和最小,而目标对具体观察者的依赖被解除了。

 

 

l         背景:

1.       观察者模式要解决的问题为:建立一个(subject)对多(observer)的依赖关系,并且做到当‘一’变化时,依赖这个‘一’的多也能够同步改变。

2.       M类也叫混合类,通常包括纯虚函数,并用作抽象接口。

M类的特点:

Ø         不含有任何数据成员

Ø         不含有构造函数、析构函数或重载描述符

Ø         含有纯虚函数,是抽象类

 

l         作用:

建立一个一对多的依赖关系,并且做到变化的时候,依赖这个一的多也能够同步改变.

 

l         实现:

 

1.       定义接口类class

class MHTTPEngineObserver //观察器基类(M类)

{

public:

    //回调函数

    virtual void ResponseReceivedL() = 0;

};

//接口,它有一个纯虚函数,它必须被一个创建类实现。

 

2.       Obervers实现接口

class CLxdTextView : public MHTTPEngineObserver  //观察器

{

public:

void ResponseReceivedL();   // 对从M类继承来的纯虚函数进行重新实现

void ConstructL()

private:

    //定义一个CHTTPEngine类的指针

    CHTTPEngine* iHttpEngine;

};

 

3.       向数据发送方注册

void CLxdTextView ::ConstructL()

{

iHttpEngine  = new (ELeave) CHTTPEngine(*this);

};

 

4.       注册Obervers对象的指针

class CHTTPEngine //被观察者

{

private:

    MHTTPEngineObserver& iObserver;//定义一个M类的引用

public:

    CHTTPEngine(MHTTPEngineObserver& aObserver);//引用必须初始化,切记!

    void DoSomething();

};

 

5.       调用接口类的函数

case THTTPEvent::EResponseComplete:

       {

           iIfCompleted = ETrue;

           // Pass the response buffer by reference to the observer

           iObserver.ResponseReceivedL(*iResponseBuffer);// 回调函数

           iTimerOut->Cancel();

       }

       break;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值