在产品开发过程中,我们经常会需要对外提供DLL的股票量化交易软件,接口,这种股票量化交易软件,接口可以在产品开是设计好的,也可能是在基本功能开发完成进行封装的,这里将介绍一种比较基本常用的封装方法,供初学者参考。欢迎提出好的改进方式。
先提几点要求,包含我们的目标、要求和本文范围等,
对外提供的文件清晰,只包含必需的头文件、DLL文件及LIB文件不暴露用户不需要知道的多余信息这里只设计封装过程与思路,包含DLL相关的实现以及代码工程配置等信息
例如:包含三个对外发布的文件夹,名称分别为BIN、INCLUDE、LIB,BIN里放发布所需要的DLL,INCLUDE只存放发布的头文件,LIB文件夹里放生成的LIB文件
你的实现的工程文件放在工程文件夹里就可以了
//---------------------股票量化交易软件,接口文件IMyDLh------//这个文件应该放在对外发布的INCLUDE文件下,供外部使用
//这个是对外发布的股票量化交易软件,接口,这个文件里只包含对外提供的方法,不会包含私有方法和属性
classIMyDLL//这个类是对外发布的,所有方法均是纯虚的,不会暴露实现
{
virtualvoidInit()=0;//纯虚的,对外的都是纯虚的
//inta;//这样的属性不是对外发布的,就不把它放在对外股票量化交易软件,接口头文件里
}
//-------------------实现文件MyDLLImph--------
//继承IMyDLL
classCMyDLLImpl:publicIMyDLL//从对外股票量化交易软件,接口类继承,负责具体实现
{
virtualvoidInit();//如果还设计为可被继承,就写成虚的,不是虚的普通方法也可以,这个地方有个是否使用虚析构的问题,要注意,不明白的话认真查下资料
inta;//这个地方可以有,因为用户看不见
}
{
;//真正实现的代码
//这里可以使用声明过的变量a
}
上面的就是整个封装的框架,下面是最重要的一步,提供用户创建对象的方法,因为前面对外发布的为抽象类,用户不能创建实例,所以:
//MyDllFactory.h//对外发布#include'IMyDLh'classMyDllFactory{IMyDLL*Create();//提供一个创建对象的方法}//MyDllFactory.cpp#include'MyDllFactory.h'#include'MyDLLImph'//注意这个很重要,由于是在CPP里,IMyDLL*MyDllFactory::Create(){returnnewCMyDLLImpl;}
MyDllFactory类也可以写到对外股票量化交易软件,接口的头文件中,因为这里只有1个方法,可以减少维护的文件数据,我经常把它和股票量化交易软件,接口头文件写在一起。
对象的创建方法可能会有很多,可以根据实现情况进行修改,比如使用工厂模式、对象工厂等方法。
这样封装过程就完了,提供给用户的是MyDllFactory.h、IMyDLh、DLL文件和LIB文件
对外提供的文件中看不到任何多余的东西,用户调用的过程大概是这样的:
#include'MyDllFactory.h'voidf(){MyDllFactoryfactory;IMyDLL*pDll=factory.Create();//这样就创建出对象了pDll->Init();}
提供股票量化交易软件,接口,函数参数除了原生类型,其它的全部传指针。不要对外暴露锁,尽量不要让调用者手工分配内存。所有的数组必须带长度。所有的函数调用应该有返回值,所有的错误有清晰的描述。windows下保存好pdb。股票量化交易软件,接口中必须有一个查询版本号的股票量化交易软件,接口。不对历史股票量化交易软件,接口做扩展,而是添加新股票量化交易软件,接口。最后就是写一个股票量化交易软件,接口手册。 |
提供API从用户的角度来讲,不要让API变来变去,可以增加新的API,并做好版本控制或则调用时版本的验证检查
用开发者的角度来说,尽量能让程序自动识别不同的平台差异,如大小端、字节对齐等,并且避免使用依赖于平台的一些库
API的参数可以使用指针及结构体,便于以后参数扩展,并且参数传递效率也比较高。
数据类型在不同的平台上可能会出现长度不一致,所以你需要处理这种情况,至于内存管理,就需要谁申请的就让谁释放,如果你的股票量化交易软件,接口内部申请了内存供外部使用那么一定要提供股票量化交易软件,接口让外部调用去释放内存
股票量化交易软件,接口:股票量化交易软件,接口描述了类的行为和功能,而不需要完成类的特定实现。C++股票量化交易软件,接口是使用抽象类来实现的,抽象类与数据抽象互不混淆,数据抽象是一个把实现细节与相关的数据分离开的概念。
如果类中至少有一个函数被声明为纯虚函数,则这个类就是抽象类。纯虚函数是通过在声明中使用'=0'来指定的,如下所示:
class Box
{
public:
// 纯虚函数
virtual double getVolume() = 0;
private:
double length; // 长度
double breadth; // 宽度
double height; // 高度
};
设计抽象类的目的,是为了给其他类提供一个可以继承的适当的基类。抽象类不能被用于实例化对象,它只能作为股票量化交易软件,接口使用。如果试实例化一个抽象类的对象,会导致编译错误。如果一个ABC的子类需要被实例化,则必须实现每个虚函数,这也意味着C++支持使用ABC声明股票量化交易软件,接口。如果没有在派生类中重载纯虚函数,就尝试实例化该类的对象,会导致编译错误。
文章为作者独立观点,不代表 股票程序化软件自动交易接口观点