A volte mi imbatto in queste API in stile hub di messaggi, ad esempio Cocoa NSNotificationCenter: http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSNotificationCenter_Class/Reference/Reference.html
Di solito queste API forniscono un punto di accesso globale su cui ti iscrivi o trasmetti messaggi / eventi. Sto pensando che questo sia un problema perché incoraggia un'architettura di programma piatta e non strutturata, in cui le dipendenze non sono esplicite nell'API, ma nascoste nel codice sorgente. Non sei obbligato a pensare alla proprietà e alle gerarchie degli oggetti, ma puoi piuttosto fare in modo che qualsiasi oggetto nel tuo programma dia luogo a qualsiasi codice venga chiamato ovunque. Ma forse questa è una buona cosa?
Questo schema generalmente incoraggia la progettazione di programmi buoni o cattivi, e perché? Rende il codice più difficile o più facile da testare?
Perdonami se questa domanda è troppo vaga o ampia. Sto cercando di avvolgere la mia testa sulle potenziali conseguenze di un ampio uso di un'API come questa e sui diversi modi in cui potresti usarla.
Modifica: Immagino che il mio problema più grande con questo modello sia che l'API "mente" su dipendenze e accoppiamenti di oggetti, e può essere illustrata con questo esempio:
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