В моем приложении у меня много классов. Большинство из этих классов хранят совсем некоторые данные, и важно, чтобы другие модули в моем приложении также «обновлялись», если изменяется содержимое одного из классов данных.Различные способы наблюдения за изменениями данных
Типичный способ сделать это так:
void MyDataClass::setMember(double d)
{
m_member = d;
notifyAllObservers();
}
Это довольно хороший метод, если член не часто меняла и нуждаются в «наблюдающей классов», чтобы быть уточненный как быстрый насколько это возможно.
Другой способ наблюдения изменений заключается в следующем:
void MyDataClass::setMember(double d)
{
setDirty();
m_member = d;
}
Это хороший метод, если элемент изменяется во много раз, и выражение «наблюдение классов» через равные промежутки времени на всех «грязных» случаях.
К сожалению, у меня есть сочетание обоих типов данных в моих классах. Некоторые из них меняются не так часто (и я могу жить с нормальными наблюдателями), другие меняются много раз (это в сложных математических алгоритмах) и вызывая наблюдателей каждый раз, когда изменения ценности убьют производительность моего приложения.
Есть ли какие-либо другие приемы наблюдения за изменениями данных или шаблоны, в которых вы можете легко комбинировать несколько разных методов наблюдения за изменениями данных?
Хотя это вопрос, не зависящий от языка (и я могу попытаться понять примеры на других языках), окончательное решение должно работать на C++.
Впечатляющий. +1. – Patrick
Новый вопрос по той же теме (автор: Patrick): http://stackoverflow.com/questions/3667317/best-way-to-keep-the-user-interface-up-to-date, где он замечает, что просто генерирование много событий может убить выступления. –