И это всё МОЁ

Добрый день.

В книге Приемы объектно-ориентированного проектирования. Паттерны проектирования от Банды четырех в главе о Наблюдателе обсуждается так называемый менеджер изменений (ChangeManager). А также реализация основанная на ациклическом направленном графе зависимостей между субъектами и их наблюдателями (DAGChangeManager).

0) В начале описания менеджера изменений пишется, что если некоторая операция влечет за собой изменения в нескольких независимых субъектах, то нужно, чтобы наблюдатели уведомлялись после того, как будут модифицированы ВСЕ субъекты. Почему именно так? Ведь если субъекты независимы, то логично при изменениях в некотором субъекте СРАЗУ уведомить соответствующих наблюдателей.

1) В описании говорится, что если у одного наблюдателя несколько субъектов, то плохо, когда изменения сразу у нескольких субъектов, ведь тогда наблюдатель получит избыток уведомлений. Но почему избыток? Ведь логично, что от каждого субъекта будет по одному уведомлению для каждого субъекта? И далее пишется, что DAGChangeManager гарантирует, что наблюдатель получит только одно уведомление. Опять-таки какого хрена? Ведь нужно, чтобы наблюдатель получил уведомление от каждого субъекта, у которого зарегистрирован.

2) Можете более подробно описать работу DAGChangeManager?