Bazen bu mesaj göbeği tarzı API'larla karşılaşıyorum, örneğin Cocoa NSNotificationCenter: http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSNotificationCenter_Class/Reference/Reference.html
Genellikle bu API'lar, mesajlara / etkinliklere abone olduğunuz veya yayınladığınız global bir erişim noktası sağlar. Bağımlılık API açık değil, ancak kaynak kodunda gizli düz ve yapılandırılmamış bir program mimarisi teşvik çünkü bu bir sorun olduğunu düşünüyorum. Nesne sahipliği ve hiyerarşileri düşünmek zorunda değilsiniz, ancak programınızdaki herhangi bir nesnenin herhangi bir yerde herhangi bir kodla sonuçlanmasını sağlayabilirsiniz. Ama belki de bu iyi bir şeydir?
Bu model genellikle iyi veya kötü program tasarımını teşvik ediyor mu ve neden böyle? Kodu test etmeyi zorlaştırıyor veya kolaylaştırıyor mu?
Bu soru çok belirsiz veya genişse affet beni. Başımı böyle bir API'nin yaygın kullanımının potansiyel sonuçları ve onu kullanabileceğiniz farklı yollar etrafında sarmaya çalışıyorum.
Düzenleme: Bu model ile benim en büyük sorunum API bağımlılıklar ve nesne kuplajları hakkında "yalan" ve bu örnek ile gösterilebilir olduğunu tahmin:
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