用于传递大量参数的C ++设计模式
问题内容:
我有一个大小适中的类,可以实现几种与逻辑相关的算法(来自图论)。大约需要10-15个参数作为算法的输入。这些没有被算法修改,但是被用来指导它的操作。首先,我解释了实现此目标的两个选项。我的问题是执行此操作的常用方法是什么(无论是否是两个选项之一)。
我个人不喜欢在N
较大时将这些值作为参数传递给函数,尤其是在我仍在开发算法的时候。
void runAlgorithm(int param1, double param2, ..., bool paramN);
相反,我有一个Algorithm
包含算法的类,而我有一个AlgorithmGlobals
包含这些参数的结构。我要么将此结构传递给:
void runAlgorithm(AlgorithmGlobals const & globals);
或者,我向该类添加一个公共的AlgorithmGlobals实例:
class Algorithm {
public:
AlgorithmGlobals globals;
void runAlgorithm();
}
然后在其他地方,我会这样使用它:
int main() {
Algorithm algorithm;
algorithm.globals.param1 = 5;
algorithm.globals.param2 = 7.3;
...
algorithm.globals.paramN = 5;
algorithm.runAlgorithm();
return 0;
}
请注意,的构造函数AlgorithmGlobals
为每个参数定义了良好的默认值,因此仅需要指定具有非默认值的参数。
AlgorithmGlobals
不能设为私有,因为可以在runAlgorithm()
调用函数之前自由修改它们。无需“保护”它们。
问题答案: