我正在开展一个arduino项目。
对于那些不知道arduino是什么的人:
arduino是一个小型电子板,可以用C ++编程的微控制器
由于arduino是一个小型微控制器,因此单核16MHz多处理非常困难。
我已经创建了一个类,在构造函数中,它将一个引脚定义为pwm输出,设置最小淡入淡出,最大淡入淡出,淡入淡出时间等。
我有方法开始淡化并停止淡化变化设定点,速度......
对于多重渐变我已经制作了更新方法。
因此,当我调用light1.update()时,它会检查是否需要更改pwm输出。
现在的问题是:
我有更多的灯,所以这将是:
light1.update();
light2.update();
light3.update();
and so on
有没有办法在fade类的每个对象上只编写一行来调用update()?
答案 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();