用c++如何实现一个模板去执行多个含有相似的两套功能的不同目的的接口?

标题有点绕,解释下。
比如现在有20台机器,每台机器的功能有:重启,关机,数据显示,设置电压,导出数据,获取日志等。

现在的问题是,每个功能都分部分机器执行和全部机器执行,我在写代码的时候,有时候会写了全部执行的,却忘了改部分执行的。

今天突然想到了模板,在代码块高度类似的条件下,可不可以用模板或者类似的可以达到一套代码,多地复用,避免遗漏的目的呢?

界面用的mfc里,我贴一小段代码

// 导出机器信息
void ExportDevInfo()
{
    // 1 CFileDialog类创建并打开csv文件
    // 2 设置csv文件的表头的列名(首行的字段)
    //   2.2 开始导出信息,此处动作分全部执行和部分执行
         2.2.1 全部导出
               pos = gDlgPtr->gDevList.GetFirstSelectedItemPossition();
                if(pos == NULL) // pos为空表示未选
                {
                     //不选中,设置为对全部机器执行
                     //获取总机器设备数目
                     int totalDev= gDevList.GetItemCount();
                     // 对全部行的机器执行操作
                     {操作}
                }
                else //选中部分
                {
                     while(pos)
                     {
                         //pos为行索引,不断向前移动
                         int item = gDevList.GetNextSelectedItem(pos);
                         // 对选中的机器进行操作
                        {操作}
                     }
                }
                   
        
}

{操作} 里的代码基本是一模一样的。

现在的问题是:
比如导出信息功能,函数的前面部分是创建打开一个文件,再分部分和全部执行
如果设置电压功能,函数前面区分部分和全部,然后再进行TCP连接机器

我的初衷是将这些针对两套操作的函数,合并在一个函数或者模板里。但是现在有点无从下手。

我看了同事的一个函数实现,是把执行部分的代码块封装成一个函数,然后在全部操作和部分操作的分支里调用。

不行吧,模板一般是操作相同,但是操作目标的类型不同。你这种感觉可以用策略设计模式

是的,实现时利用模板肯定是首选,但和你策略设计无关。

您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

这个是功能设计问题,针对每个功能做个配置

非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

速戳参与调研>>>https://t.csdnimg.cn/Kf0y

C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html
C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html