0

我正在编写一些科学代码来生成/导入一些数据(我们称之为 X)以生成其他数据集(我们可以称之为 Y)。问题是生成 X 的方法不止一种,而且这种生成方法会影响 Y 的计算公式。

我已经开发了一个库来处理数据导入和计算的东西,但是,我无法在没有用户干预的情况下决定一个完善的机制来修改公式。

处理此类案件的最佳方法是什么?我为 X 的不同生成方法实现了不同的功能,但 Y 的计算方法是单一的。

为了澄清更多,我想实现以下行为:

  1. 用户调用生成/导入 X 的导入函数之一,
    • 奇迹发生了,计算 Y 的公式以某种方式更新。
  2. 然后用户调用生成 Y 的 calc() 函数。

这个问题中提到的所有函数都是具体的、简单的和愚蠢的类内函数。

我不确定如何在生成/导入 X 并使魔术起作用的函数中实现触发机制。有用的研究员@UnknownGosu 和@Dima-Rudnik 回答了存储配方的方法。

提前致谢。

4

1 回答 1

1

你需要一种形式的策略模式

就像@UnknownGosu 指出的那样。定义一个抽象Formula接口,如下所示:

class Formula
{
public:
  virtual double calc(double) = 0;
};

比创建一个混凝土Formula

class QuardicFormula : public Formula
{
public:
  double calc (double x) {return x*x;}
};

编辑:

在过程编程中,函数指针也是如此。例如,采用指向排序函数的指针的 QuickSort 实现。

于 2012-09-16T19:12:56.613 回答