如何能有效地屏蔽C++开发的功能模型API中的实现细节

jznudt 2015-08-05 12:45:00
最近承担了利用C++ 开发XX仿真模型的任务,最终提交形式为DLL,以及对应的.h头文件(可能有多个)和lib文件,采用面向对象和模块化的设计思路,已经完成了大体框架设计,概述如下:

#include "RadarPublicDef.h"

class CAntenna;
class CReciver;
class CDigitalProcessor;
……

class RADAR_API RADARDLL
{
public:
RADARDLL();
//其它构造函数
……
virtual ~RADARDLL();

//执行初始化操作
bool Initialize(const INITPATAM& param);

//执行时间迭代步进操作
void Advance();

protected:
……

private:
CAntenna* m_Antenna;
CReciver* m_Receiver;
CDigitalProcessor* m_DigitalProcessor;
……
};


我的问题是这样的:感觉在头文件中暴露了太多的实现细节,例如把XX仿真模型拆分成了天线等多个子系统。有没有一种设计思路,能尽量在头文件屏蔽实现细节?最理想的情况是,除了暴露出来的公有接口外,基本上不包含任何的私有变量。

请教论坛里的各位大人,先谢谢了。
...全文
235 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
BurnellLiu 2015-08-05
  • 打赏
  • 举报
回复
(2)委托法 暴露出去的.h class CTest; class ITest { public: int DoSomeThing(); private: CTest* m_TestObject; }; 自己隐藏的实现: class CTest { public: int DoSomeThing() { return 0; } }; int ITest::DoSomeThing() { m_TestObject->DoSomeThing(); }
jiqiang01234 2015-08-05
  • 打赏
  • 举报
回复
《exceptional c++》中“编译器防火墙和pimpl惯用法 ”章节
二班的码农 2015-08-05
  • 打赏
  • 举报
回复
再对其封装一次
BurnellLiu 2015-08-05
  • 打赏
  • 举报
回复
(1)接口法 暴露出去的.h文件 class ITest { public: virtual int DoSomeThing() = 0; virtual void Delete() = 0; }; ITest* CreateTestObject(); 自己实现的.h文件 class CTest : public ITest { public: virtual int DoSomeThing() { return 0; } virtual void Delete() { delete this; } }; ITest* CreateTestObject() { return new CTest(); }
瑞卡哥哥 2015-08-05
  • 打赏
  • 举报
回复
只需要在你这些的接口上 再封装一层调用就可以了. 调用的 头文件给用户使用
赵4老师 2015-08-05
  • 打赏
  • 举报
回复
请牢记:源代码本身的书写是否结构化或面向对象或符合设计模式或敏捷…并不重要,重要的是你是否使用结构化或面向对象或符合设计模式或敏捷…的方法命名标识符、阅读、修改、检查、测试源代码。 意思是你程序结构看上去再合理,再简洁,也不一定比看上去一团乱麻的程序结构在运行或修改时更不易出错,更方便修改,出错了更容易找到哪里出错和具体出错的原因,更容易改正错误。 试对比 图书馆(对图书的分类够结构化了吧) 和 搜索引擎(可看作是扁平化任何结构数据,仅支持全文检索) 哪个处理信息更方便、更高效。 所以 与其费劲去重构代码让其看上去更简洁、更合理 不如费劲学习grep、sed、awk、……这类全文搜索和批处理编辑的工具。 结构越复杂,越难修改,越难除错。 有时(甚至大多数时候),看上去越合理、越简洁的代码,运行起来性能越差,出错时查找原因越难,找到出错原因后改正越费劲。 程序员要做的不是尽力避免错误,而是聚焦在快速发现并改正错误。真正以快速方式轻易解决错误,“快速的失败”远胜过“预防错误”。Fred George
sandshaw 2015-08-05
  • 打赏
  • 举报
回复
再封装一层.
赵4老师 2015-08-05
  • 打赏
  • 举报
回复
请楼主拥抱开源时代。

5,530

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 模式及实现
社区管理员
  • 模式及实现社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧