利用模板隐藏代码中依赖关系

一个同构的逻辑在多数时候会遇到下面类似的问题:工程里面有一个系统 同时在另一个工程里面 有一个针对此系统提供的工具 并且需要实现一个简易的模拟流程。 多数的数据结构一致,业务流程也差不多一样,  最大区别在于 模拟的流程 里面不需要提供实际流程中复杂的逻辑。

应对这种问题一般的方法是提供 该系统 interface 这种接口类头文件, 利用这个接口文件 可以屏蔽 复杂逻辑 工程里的 代码依赖。 这份方法好处在于结构清晰。 但存在一个问题是如果此系统的 功能颇多 ,则接口一个个写起来也是很吐血的事情,而且在接口在不停增长的背景下要同步维护  1复杂代码.h 2 接口.h 3 简单代码.h  之间的联系也是件费力的事情。 如果只是部分 代码需要隐藏时 这种方案显得更加的不划算

有个更简单快捷的方法, 让3个 .h得以合成1个 且 不用把 代码中的依赖 带到这个.h 中 ----- 对  利用  模板 这个编译期间生成代码的特性,可以把代码依赖通通扔给.cpp解决。 

假设 一个任务系统 有个 void sendmsg(MSG m) 的接口 ,而工具所在的环境中并没有引入过通讯相关的东西,不认识MSG 这种东东而且在实现里也压根不会调用到,那

只需要把接口 实现成 template<MSG> void sendmsg(MSG m) 就可以让编译器停止 报sendmsg编不过的错 

配合良好的习惯,可以把依赖代码放.cpp里, 把系统内聚的逻辑放.h里 ,这样一来 工具的简易流程实现起来就容易多了 。只用重写部分方法 cpp就行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值