Іноді я стикаюся з такими API-стилями стилів-повідомлень, наприклад, NSNotificationCenter Cocoa: http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSNotificationCenter_Class/Reference/Reference.html
Зазвичай ці API надають глобальну точку доступу, на якій ви підписуєтесь або транслюєте повідомлення / події. Я думаю, що це проблема, оскільки вона заохочує плоску та неструктуровану архітектуру програми, де залежності не явні в API, а приховані у вихідному коді. Ви не змушені думати про право власності на об'єкти та ієрархії, але можете скоріше зробити будь-який об'єкт у вашій програмі результатом будь-якого коду, де завгодно. Але, може, це добре?
Чи загалом ця модель заохочує гарний чи поганий дизайн програми, і чому так? Це робить код складніше чи простіше перевірити?
Пробачте, якщо це питання занадто розпливчасте чи широке. Я намагаюся обернути голову навколо потенційних наслідків широкого використання такого API, і різних способів, якими ви могли б користуватися.
Редагувати: Я думаю, що найбільша проблема з цією схемою полягає в тому, що API "лежить" щодо залежностей і об'єктних з'єднань, і це можна проілюструвати на цьому прикладі:
myObj = new Foo();
myOtherObj = new Bar();
print myOtherObj.someValue; // prints 0
myObj.doSomething();
print myOtherObj.someValue; // prints 1, unexpectedly, because I never indicated that these objects had anything to do with each other