Parfois, je rencontre ces API de type hub de message, par exemple Cocoa NSNotificationCenter: http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSNotificationCenter_Class/Reference/Reference.html
Habituellement, ces API fournissent un point d'accès global sur lequel vous vous abonnez ou diffusez des messages / événements. Je pense que c'est un problème car cela encourage une architecture de programme plate et non structurée, où les dépendances ne sont pas explicites dans l'API, mais cachées dans le code source. Vous n'êtes pas obligé de penser à la propriété et aux hiérarchies des objets, mais vous pouvez plutôt faire en sorte que n'importe quel objet de votre programme entraîne l'appel de n'importe quel code. Mais c'est peut-être une bonne chose?
Ce modèle encourage-t-il généralement une bonne ou une mauvaise conception de programme, et pourquoi? Cela rend-il le code plus difficile ou plus facile à tester?
Pardonnez-moi si cette question est trop vague ou trop large. J'essaie de comprendre les conséquences potentielles d'une utilisation extensive d'une API comme celle-ci, et les différentes façons dont vous pouvez l'utiliser.
Edit: Je suppose que mon plus gros problème avec ce modèle est que l'API "ment" sur les dépendances et les couplages d'objets, et peut être illustrée par cet exemple:
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