C++实时策略模式来处理不同的数据

C++ Real-Time Strategy Pattern to process Different Data

本文关键字:数据 处理 实时 策略 模式 C++      更新时间:2023-10-16

我目前正在研究一种在 c++ 中实现策略模式的有效方法,该模式在运行时(它应该实时运行)方面是有效的,但又是模块化的。

更具体地说,考虑一个将处理来自不同来源的数据的系统。数据的抽象处理步骤总是相同的(想想模板模式)。但是,要使用的特定算法可能取决于处理哪些数据(即其来源)。因此,我想通过适当的接口设置确定策略的上下文,但保持实际处理接口的固定。
为了使事情进一步复杂化,我需要模块化,即我需要能够在不同的源代码设置之间切换,而无需重写完整的代码。(高编译时模块化。

为了让您更多地了解我正在尝试的内容,这里有一些显然不起作用的精简示例代码:

class GeneralDataContainer
{
    int some_general_data;
}
template<typename type>
class DataContainer : GeneralDataContainer
{
    type some_specific_data;
}
class SubmoduleInterface
{
    void setContext(SomeContextIdentifier & context){...}
    void processData(GeneralDataContainer & data){...}
}

现在的问题是:我怎样才能让它工作?

我研究的主要方向是标准的OO多态性(它有表查找的问题)和CRTP,我不知道如何访问子模块和封闭策略算法中的特定数据(some_specific_data)。

很可能是一个非常愚蠢的问题,并且有一个直截了当的答案。但我就是无法弄清楚,所以如果有人比我有更多的 c++ 经验(基本上应该是每个人),我可以为我指出正确的方向,那就太好了。提前谢谢。

据我了解,主要目标是根据您拥有的特定数据使用不同的处理算法。

看起来策略模式给出了这个问题的解决方案,它在运行时有效。对于每个新源,您只需实现额外的具体类。

如果我没有得到你的问题,请添加更多解释或示例,说明你想做什么。