Перегрузка шаблона наблюдателя - PullRequest
3 голосов
/ 18 ноября 2009

Я застрял в следующем сценарии. У него есть запах кода, который меня не устраивает, но разрешение кажется слишком сложным, но по-разному.

У меня есть граф сцены, представляющий бизнес-объекты. Я разработал его так, чтобы сами бизнес-объекты были настолько простыми, насколько это возможно. Они практически POJO.

Теперь 1 сущность может отображаться в нескольких областях графа сцены разными узлами.

Когда объект изменяется, все соответствующие узлы графа сцены должны измениться.

Я не решаюсь использовать шаблон наблюдателя на всех моих сущностях, поскольку у меня одновременно более 50000 сущностей на экране.

Поскольку все изменения инициируются из представления, сейчас я повторяюсь по графу сцены и принудительно перезагружаю все узлы, связанные с измененным объектом. Хотя не чувствует себя хорошо.

Любые предложения о том, как это можно сделать лучше?

Ответы [ 2 ]

3 голосов
/ 18 ноября 2009

Бизнес-объект == Сущность? У вас есть 50 тыс. Из них, представленных в виде узлов на экране, причем некоторые объекты имеют более одного узла. Действие пользователя изменяет состояние объекта, и поэтому некоторые узлы должны быть обновлены. Но, конечно, сущности не знают об узлах.

Я бы использовал прокси-объект, обертывающий сущность. Он понимает отношение к Узлам. Обновления сущности проходят через него, поэтому он может завершить обновление и затем уведомить соответствующие узлы. Фактически это позволяет избежать итерации набора узлов, ищущих обновления.

2 голосов
/ 18 ноября 2009

Объекты должны размещать свои обновления в одной очереди, которая затем может быть опрошена объектом, ответственным за обновление представления.

...