根据API中调用的其他函数更改函数的行为

时间:2012-09-16 18:37:22

标签: c++ oop class

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

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

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

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

  1. 用户调用生成/导入X的导入函数之一,
    • 魔法发生了,计算Y的公式以某种方式更新。
  2. 用户然后调用生成Y的calc()函数。
  3. 这个问题中提到的所有功能都是具体,简单和愚蠢的课堂功能。

    我不确定如何在生成/导入X的函数中实现触发器机制并使魔法工作。存储配方的方法由有用的伙伴@Un​​knownGosu和@Dima-Rudnik回答。

    提前致谢。

1 个答案:

答案 0 :(得分:1)

您需要strategy pattern的表单。

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

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

创建一个具体的Formula

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

修改

在过程编程中,使用函数指针完成相同的操作。 例如,QuickSort的一个实现,它接受一个指向排序函数的指针。