symbian开发:Symbian C++程序开发中纯虚类的妙用

提起有关symbian开发让我印象最深是纯虚类应用几乎是随处可见但如果你是做MFC应用开发却是很难看到纯虚类使用刚开始我直以为是嵌入式有较多异步消息响应才会用到纯虚类当我学会自己运用纯虚类来为自己设计接口时我才发现纯虚类使用是多么妙!



我第次碰到纯虚是看到个有关time out触发控制这个类非常简单当超时则触发某个处理思路方法就让我们看看这个类是如何设计:



先设计个纯虚来实现超时处理思路方法个类需要运用超时处理时只要继承这个类并为这个类纯虚实现处理思路方法即可在这个类中实现超时处理思路方法:

MTimeOutNoty

{

public:

virtual void TimerExpired = 0;

};



下面是个继承了定时器这个类中带有个上面纯虚类对象(即iNoty对象)当出现超时它会这个对象思路方法从而建立了超时处理机制:

CTimeOutTimer : public CTimer

{

public:

CTimeOutTimer* NewL(const TInt aPriority, MTimeOutNoty& aTimeOutNoty);

CTimeOutTimer* NewLC(const TInt aPriority, MTimeOutNoty& aTimeOutNoty);

~CTimeOutTimer;

protected: // From CTimer

virtual void RunL;

private:

CTimeOutTimer(const TInt aPriority, MTimeOutNoty& aTimeOutNoty);

void ConstructL;

private:

// Member variables

MTimeOutNoty& iNoty;

};



下面是有关定时器类构造思路方法从这个构造思路方法可以看出例子化这个类时需要传入纯类对象:

CTimeOutTimer::CTimeOutTimer(const TInt aPriority, MTimeOutNoty& aTimeOutNoty)

: CTimer(aPriority), iNoty(aTimeOutNoty)

{

}

我们在建立应用这个定时器类时只要继承纯虚然后把应用类对象作为参数传入即可假如有个需要使用超时机制应用类A则A中有个CTimeOutTimer成员对象B且A类继承了虚类CTimeOutTimer例子化B则可以这样:

B = CTimerOutTimer(0,this);



下面实现超时回调思路方法:

void CTimeOutTimer::RunL

{

iNoty.TimerExpired;

}



在symbian C SDK中几乎所有带异步消息响应类都必然会有个纯虚类手机属于嵌入式设备由于资源有限很多消息是异步消息所以随处可以见到纯虚类应用但纯虚类并不局限于应用异步消息思路方法中它也可以应用于需要产生回调思路方法模块接口设计中应用纯虚类来建立相应接口简要地说可以有如下这些好处:

1. 模块接口更加清晰;

2. 模块设计更加独立和灵活;

3. 模块的间耦合度更小

还有个让我有个说不出好处它会让你觉得这种处理回调思路方法是多么妙!让我深感运用C可以设计出个结构非常好框架不象C语言总给人种拼凑感觉



我总认为编程也会有艺术上美感享受当然前提是要写得妙
Tags:  symbian开发工具 symbian开发论坛 symbian开发环境 symbian开发

延伸阅读

最新评论

发表评论