A volte mi imbatto in queste API di tipo message-hub, ad esempio Cocoa NSNotificationCenter: link
Di solito queste API forniscono un punto di accesso globale sul quale ti iscrivi o trasmetti messaggi / eventi. Penso 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 costretto a pensare alla proprietà degli oggetti e alle gerarchie, ma puoi piuttosto far sì che qualsiasi oggetto nel tuo programma porti a qualunque codice venga chiamato. 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 comprendere le potenziali conseguenze dell'uso estensivo di un'API come questa e dei diversi modi in cui potresti usarlo.
Modifica: Credo che il mio più grande problema con questo modello sia che l'API "giace" sulle dipendenze e sugli accoppiamenti di oggetti e può essere illustrato 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