一个同构的逻辑在多数时候会遇到下面类似的问题:工程里面有一个系统 同时在另一个工程里面 有一个针对此系统提供的工具 并且需要实现一个简易的模拟流程。 多数的数据结构一致,业务流程也差不多一样, 最大区别在于 模拟的流程 里面不需要提供实际流程中复杂的逻辑。
应对这种问题一般的方法是提供 该系统 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就行
原文链接:https://www.f2er.com/javaschema/286465.html