{
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 //无需继承