1

我正在做一个 arduino 项目。

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

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

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

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

我有方法开始衰落和停止衰落改变设定点,速度......

对于多重渐变,我做了一个更新方法。

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

现在的问题是:

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

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

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

4

1 回答 1

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();
于 2012-06-05T19:10:03.170 回答