Я работаю над реализацией приложения с использованием шаблона Model-View-Presenter.
Несмотря на то, что докладчик может просто переслать несколько сигналов (просто connect
, используя соответствующие сигналы и слоты между моделью и видом), он все же должен подвергнуться некоторой незначительной обработке некоторых сигналов, например,
Presenter::Presenter(Model* model, View* view, int treshold)
: m_model(model), m_view(view), m_criticalValueTreshold(treshold)
{
// can directly connect those
connect(m_model, &Model::valueChanged, m_view, &View::updateValue);
// need to check value in case it exceeds the treshold to tell user
connect(m_model, &Model::criticalValueChanged, this, [this](int criticalValue),
{
m_view.updateCriticalValue(value);
if (criticalValue > m_criticalValueTreshold)
m_view.notifyUser();
});
}
Я мог бы напрямую использовать лямбду, но, видя, как я также получаю доступ к значениям членов класса Presenter, я не могу не задаться вопросом, не следует ли мне включить лямбду в правильную (частную) функцию и connect
для что вместо этого.
Какой подход был бы лучше (или вообще)?