我目前正在研究一种在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多态(具有表查找的问题),以及我不知道如何访问子模块和封闭策略算法中的特定数据(some_specific_data)的CRTP。 / p>
这可能是一个非常愚蠢的问题,并且有一个直截了当的答案。但我只是无法搞清楚,所以如果有更多c ++经验的人(基本上应该是每个人)比我指向正确的方向,那就太棒了。提前谢谢。
答案 0 :(得分:0)
据我所知,主要目标是根据您拥有的具体数据使用不同的处理算法。
看起来战略模式给出的是这个问题的解决方案,它在运行时工作。对于每个新源,您必须实现其他具体类。
如果我没有得到您的问题,请添加更多解释或您想做什么的示例。