Добрый день.
В книге Приемы объектно-ориентированного проектирования. Паттерны проектирования от Банды четырех в главе о Наблюдателе обсуждается так называемый менеджер изменений (ChangeManager). А также реализация основанная на ациклическом направленном графе зависимостей между субъектами и их наблюдателями (DAGChangeManager).
0) В начале описания менеджера изменений пишется, что если некоторая операция влечет за собой изменения в нескольких независимых субъектах, то нужно, чтобы наблюдатели уведомлялись после того, как будут модифицированы ВСЕ субъекты. Почему именно так? Ведь если субъекты независимы, то логично при изменениях в некотором субъекте СРАЗУ уведомить соответствующих наблюдателей.
1) В описании говорится, что если у одного наблюдателя несколько субъектов, то плохо, когда изменения сразу у нескольких субъектов, ведь тогда наблюдатель получит избыток уведомлений. Но почему избыток? Ведь логично, что от каждого субъекта будет по одному уведомлению для каждого субъекта? И далее пишется, что DAGChangeManager гарантирует, что наблюдатель получит только одно уведомление. Опять-таки какого хрена? Ведь нужно, чтобы наблюдатель получил уведомление от каждого субъекта, у которого зарегистрирован.
2) Можете более подробно описать работу DAGChangeManager?
понедельник, 01 апреля 2019
И это всё МОЁ