background image


return dmc1000_board_init(); 

…(其它略去) 

生成

OMS 控制卡的 MOMS.dll 如法炮制: 

int InitBoard() 


…(其它略去) 

在代码中调用

DMC1000 控制卡,使用如下: 

CDviece mineDviece; 
mineDviece.LoadLibaray(“Mdmc1000.dll”); 
if( mineDviece.InitBoard() ) 

…(Do s.th) 

使用

OMS 控制卡如下: 

mineDviece.LoadLibaray(“Moms.dll”); 
…(其它略去) 

看似简单,实质上略去的部分将是程序员的一场恶梦,想一想那一大堆的定义和声明,一
碰到

CDviece 的变动,哪怕是最小的函数返回值或参数变动,则其它相应的所有 DLL 都需

跟全部编译。这无疑给软件项目的整个维护带来极大的难度。

 

三、利用模板类实现

 

探讨到现在,本人比较推荐的就是使用此方法,它较虚拟函数相比无额外成本的开销,更
不有因为虚拟函数带来的效率问题。

 

DLL 方法相比,定义声明,及变动性都非常良好,整个维护的成本也较低。 

其编程特点即是,通过模板定义一个空壳类,然后根据需要可以邦定不同类型的控制卡。其
伪代码实现方法如下:

 

//定义一个空壳类 
template 
class CDviece: public CARD 

public: 
CDviece(){} 
~CDviece(){} 
}//简单吧,了无秘密可言 

以下定义

DMC1000 封装类: 

class CDmc1000Card //无需继承