对来自同一个类的每个对象调用方法

时间:2012-06-05 19:07:42

标签: c++ oop object arduino

我正在开展一个arduino项目。

对于那些不知道arduino是什么的人:

arduino是一个小型电子板,可以用C ++编程的微控制器

由于arduino是一个小型微控制器,因此单核16MHz多处理非常困难。

我已经创建了一个类,在构造函数中,它将一个引脚定义为pwm输出,设置最小淡入淡出,最大淡入淡出,淡入淡出时间等。

我有方法开始淡化并停止淡化变化设定点,速度......

对于多重渐变我已经制作了更新方法。

因此,当我调用light1.update()时,它会检查是否需要更改pwm输出。

现在的问题是:

我有更多的灯,所以这将是:

light1.update();
light2.update();
light3.update();
and so on

有没有办法在fade类的每个对象上只编写一行来调用update()?

1 个答案:

答案 0 :(得分:6)

看起来您正在寻找观察者模式实例管理器模式相结合的组合。

每当您创建Light的新实例时,请将其添加到经理。如果希望触发事件,请遍历管理器中的实例并调用update

类似的东西:

class LightManager
{
    static std::vector<Light> lights;
    static void notify()
    {
       for ( size_t i = 0 ; i < lights.size() ; i++ )
           lights[i].update();
    }
    static void add(const light& l)
    {
       lights.push_back(l);
    }
};

class Light
{
    Light()
    {
       LightManager::add(*this);
    }
};

然后用以下内容更新所有灯光:

LightManager::notify();