В оригінальній книзі, в якій були введені терміни «Спостерігач і посередник», « Шаблони дизайну», «Елементи багаторазового об’єктно-орієнтованого програмного забезпечення», йдеться про те, що модель «Посередник» може бути реалізована за допомогою шаблону спостерігача. Однак це також може бути реалізовано, якщо колеги (приблизно еквівалентні суб'єктам шаблону спостерігача) мають посилання на клас посередника або інтерфейс посередника.
Існує багато випадків, коли ви хочете використовувати шаблон спостерігача, але ключовим є те, що на об'єкті не слід знати, які інші об'єкти спостерігають його стан.
Посередник трохи більш конкретний, він уникає, щоб заняття спілкувалися безпосередньо, а натомість через посередника. Це допомагає принципу єдиної відповідальності, дозволяючи завантажувати спілкування до класу, який просто справляється з цим.
Класичний приклад посередника - це графічний інтерфейс, де наївний підхід може призвести до коду на події натискання кнопки, що говорить: "Якщо панель Foo вимкнена, а панель" Bar "має ярлик" Будь ласка, введіть дату ", тоді не дзвоніть на сервер, інакше йти вперед ", де за шаблоном" Медіатор "могло сказати:" Я просто кнопка і не маю жодного земного бізнесу, знаючи про панель Foo та ярлик на панелі "Бар", тому я просто попрошу свого посередника, якщо дзвонить на сервер зараз добре ».
Або, якщо вона реалізована за допомогою шаблону спостерігача, кнопка буде відповідати "Ей, спостерігачі (до якої слід віднести посередника), мій стан змінився (хтось натиснув на мене). Зроби щось про це, якщо тебе хвилює". У моєму прикладі це, мабуть, має менший сенс, але іноді це було б, і різниця між спостерігачем та посередником була б більшою мірою, ніж різницею в самому коді.