Обновление пользовательского интерфейса в реальном времени изменяется, когда модель содержит только простые структуры данных - PullRequest
0 голосов
/ 15 сентября 2009

Пожалуйста, проконсультируйтесь со мной по следующей теме:

У меня есть модель - структура объектов. Такие как:

  • Событие, содержащее участников

  • Текущее задание

  • Правоприемник каждого задания

Модель будет протравлена ​​на сервере и передана по сети клиентскому приложению с графическим интерфейсом. Из-за рассола я хотел бы сохранить классы модели как можно более простыми (то есть просто простые классы только с полями данных, без какого-либо единственного метода внутри). В результате я не могу создавать сигналы (например, OnUpdate) на объектах модели.

Иногда сервер отправляет обновления модели. Например, «Текст задания изменен». Когда обновление применяется, мне нужно, чтобы оно было отражено в пользовательском интерфейсе. В случае изменения текста задачи это должна быть смена метки в пользовательском интерфейсе. Я бы хотел, чтобы были изменены только связанные элементы управления, поэтому обновление всего пользовательского интерфейса - не лучшее решение.

С другой стороны, не хотелось бы обходить всю модель в поисках изменений - это было бы слишком ресурсоемким.

Итак, каков наилучший способ уведомления пользовательского интерфейса об изменениях в простых структурах данных?

Ответы [ 2 ]

0 голосов
/ 05 июня 2010

Вы можете добавить флаг, например, self.isOnClientSide и проверьте его в каждом обработчике обновлений, чтобы вы могли использовать различную логику в любом случае.

def onUpdateFoo(self):
  if self.isOnClientSide:
    return self.onUpdateFooOnClient()
  else:
    return self.onUpdateFooOnServer()

Измените этот флаг соответствующим образом сразу после расслоения.

0 голосов
/ 15 сентября 2009

Возможно, вы работаете по неверному представлению: рассолы не включают в себя код из рассортированных классов. Вы можете добавить методы в свои структуры данных, и это не увеличит размер ваших огурцов.

Это распространенное заблуждение о соленьях. Они не включают код.

...