कभी-कभी मैं इन संदेश-हब-शैली APIs में आता हूं, उदाहरण के लिए कोको NSNotificationCenter: http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSNotificationCenter_Class/Reference/Reference.html
आमतौर पर ये एपीआई एक वैश्विक पहुंच बिंदु प्रदान करते हैं, जिस पर आप संदेशों / घटनाओं की सदस्यता या प्रसारण करते हैं। मैं सोच रहा हूं कि यह एक समस्या है क्योंकि यह एक सपाट और असंरचित कार्यक्रम वास्तुकला को प्रोत्साहित करता है, जहां निर्भरता एपीआई में स्पष्ट नहीं है, लेकिन स्रोत कोड में छिपी हुई है। आपको ऑब्जेक्ट ओनरशिप और पदानुक्रम के बारे में सोचने के लिए मजबूर नहीं किया जाता है, बल्कि आपके प्रोग्राम परिणाम में किसी भी कोड को कहीं भी कॉल किए जाने के बजाय किसी भी ऑब्जेक्ट को बना सकता है। लेकिन शायद यह अच्छी बात है?
क्या यह पैटर्न आम तौर पर अच्छे या बुरे प्रोग्राम डिज़ाइन को प्रोत्साहित करता है, और ऐसा क्यों? क्या यह कोड को कठिन या परीक्षण करने में आसान बनाता है?
मुझे माफ कर दो अगर यह सवाल बहुत अस्पष्ट या व्यापक है। मैं इस तरह से एक एपीआई के व्यापक उपयोग के संभावित परिणामों के आसपास अपना सिर लपेटने की कोशिश कर रहा हूं, और विभिन्न तरीकों से आप इसका उपयोग कर सकते हैं।
संपादित करें: मुझे लगता है कि इस पैटर्न के साथ मेरा सबसे बड़ा मुद्दा यह है कि एपीआई निर्भरता और ऑब्जेक्ट कपलिंग के बारे में "झूठ" है, और इस उदाहरण के साथ सचित्र किया जा सकता है:
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