Manchmal finde ich diese APIs im Message Hub-Stil, zum Beispiel das Cocoa NSNotificationCenter: http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSNotificationCenter_Class/Reference/Reference.html
Normalerweise bieten diese APIs einen globalen Zugriffspunkt, an dem Sie Nachrichten / Ereignisse abonnieren oder senden. Ich denke, dies ist ein Problem, weil es eine flache und unstrukturierte Programmarchitektur fördert, bei der Abhängigkeiten nicht explizit in der API, sondern im Quellcode verborgen sind. Sie sind nicht gezwungen, über Objekteigentum und -hierarchien nachzudenken, sondern können jedes Objekt in Ihrem Programm dazu bringen, dass Code überall aufgerufen wird. Aber vielleicht ist das eine gute Sache?
Fördert dieses Muster im Allgemeinen ein gutes oder schlechtes Programmdesign und warum? Ist der Code schwieriger oder einfacher zu testen?
Verzeihen Sie mir, wenn diese Frage zu vage oder zu weit gefasst ist. Ich versuche, mich mit den möglichen Konsequenzen einer umfangreichen Verwendung einer solchen API und den verschiedenen Verwendungsmöglichkeiten auseinanderzusetzen.
Bearbeiten: Ich denke, mein größtes Problem mit diesem Muster ist, dass die API über Abhängigkeiten und Objektkopplungen "liegt" und mit diesem Beispiel veranschaulicht werden kann:
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