Как реализовать шаблон наблюдателя для быстрого словаря - PullRequest
0 голосов
/ 25 апреля 2019

У меня есть класс менеджера, который изменяет состояние переменной Dictionary<Id, MyObject> члена.

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

1 Ответ

0 голосов
/ 25 апреля 2019

Я предлагаю вам изменить направление вашего подхода. Вы думаете, что у вас есть модель (например, словарь), которая является авторитетным источником, который обновляется на месте, который затем, в свою очередь, информирует подписанных наблюдателей об изменении.

Вместо этого я предлагаю вам перевернуть это: у вас есть набор наблюдаемых (ваши интернет-API, сенсоры и т. Д.), Которые являются вашим источником необработанных данных. На них может подписаться ваш «класс менеджера данных», задачей которого является проверка и фильтрация данных. Этот объект сам по себе является наблюдаемым и является авторитетным источником данных для вашей модели. Данные передаются напрямую подписанным наблюдателям (без посредников). Если вам необходимо сохранить эти данные, то система постоянства является лишь одним из возможных подписчиков среди множества других (GUI, CLI, интеграционный тест и т. Д.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...