on8*_*tom 1 c++ oop arduino object
我正在研究一个arduino项目.
对于那些不知道arduino是什么的人:
arduino是一个小型的电子板,可以用C++编程的微控制器
由于arduino是一个小型微控制器,因此单核16MHz多处理非常困难.
我已经创建了一个类,在构造函数中,它将一个引脚定义为pwm输出en set min fade,max fade,fade time等.
我有方法开始淡化并停止淡化变化设定点,速度......
对于多重衰落,我做了一个更新方法.
因此,当我调用light1.update()时,它会检查是否需要更改pwm输出.
现在的问题是:
我有更多的灯,所以将是:
light1.update();
light2.update();
light3.update();
and so on
Run Code Online (Sandbox Code Playgroud)
有没有办法在fade类的每个对象上只编写一行来调用update()?
看起来您正在寻找Observer模式与Instance manager模式相结合的组合.
每当您创建新实例时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);
}
};
Run Code Online (Sandbox Code Playgroud)
然后用以下内容更新所有灯光:
LightManager::notify();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
309 次 |
| 最近记录: |