作者illjay0404 (寻找值得爱的人~*)
看板LinuxDev
标题Fw: [问题] 模组之间的沟通
时间Wed Nov 7 10:07:10 2012
※ [本文转录自 C_and_CPP 看板 #1GcCsKvk ]
作者: illjay0404 (寻找值得爱的人~*) 看板: C_and_CPP
标题: [问题] 模组之间的沟通
时间: Tue Nov 6 16:42:58 2012
开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
BCB
小的不才 ,最近碰上一个设计的问题自己想的方式有点怪 ,想请教大师们有没有
比较好的设计方式 ,主程式Main ,Scheduler处理各种流程
iniClass可以读写ini档案 ,BaseClass 基底动态连结使用
以下例子是我目前做法的概念 :
//---------------------------
TBaseClass {
public:
TBaseClass() {};
~TBaseClass(){};
void DoSomething() = 0;
};
//---------------------------
TScheduler {
public:
TBaseClass *iniClass_;
void Add(TBaseClass* bc){
iniClass_ = bc;
}
TScheduler() {}
~TScheduler(){}
};
//---------------------------
//******gloabl function******
TScheduler* gloablScheduler;
TScheduler* GetScheduler (){
return gloablScheduler;
}
void SetScheduler (TScheduler* Scheduler){
gloablScheduler = Scheduler;
}
//---------------------------
iniClass : public TBaseClass{
iniClass(){
GetScheduler()->Add(this);
}
~iniClass()
void DoSomething() {
//实作
}
}
//---------------------------
TMain {
TScheduler* Scheduler_;
public:
TMain() : Scheduler( new TScheduler() ){
SetScheduler(Scheduler_);
}
~Main(){
delete Scheduler_;
}
}
//---------------------------
用意是想把iniClass做成一个模组bpl可以挂载在主程式中
这样Main中的就可以Scheduler_->iniClass_->DoSomething();
因为会想挂载很多模组 ,在iniClass建构中启动个Timer去延迟个2~3秒
再去GetScheduler()->Add(this)防止建构的前後顺序去提早去GetScheduler()出来
产生问题 ,不知这方式妥不妥当 ?
以上落落长....
我想请问的是这是普遍模组之间的沟通方式吗 ?
还有就是建构顺序的问题 ,除了用Timer去延迟模组的挂载 ,还有其他方式吗 ?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.124.107.139
1F:→ DEATHX:这篇转linuxdev版应该能得到意见。 11/07 07:38
※ 发信站: 批踢踢实业坊(ptt.cc)
※ 转录者: illjay0404 (59.124.107.139), 时间: 11/07/2012 10:07:10
2F:→ leolarrel:使用mutex,semaphore等同步工具 11/08 20:07