"Tek erişim noktası" yöntemlerine karşı yöntem zincirleme klasik OOP sorunu var:
main.getA().getB().getC().transmogrify(x, y)
vs
main.getA().transmogrifyMyC(x, y)
Birincisi, her sınıfın sadece daha küçük bir operasyon kümesinden sorumlu olması ve her şeyi çok daha modüler hale getirme avantajına sahip gibi görünüyor - C'ye bir yöntem eklemek A, B veya C'de onu ortaya çıkarmak için herhangi bir çaba gerektirmez.
Olumsuz, elbette, ikinci kodun çözdüğü zayıf kapsülleme . Şimdi A, içinden geçen her yöntemin kontrolüne sahiptir ve eğer isterse kendi alanlarına devredebilir.
Tek bir çözüm olmadığını ve elbette bağlama bağlı olduğunun farkındayım, ancak iki stil arasındaki diğer önemli farklılıklar ve hangi koşullar altında ikisini de tercih etmeliyim - çünkü şu anda, denediğimde bazı kod tasarlamak için, sadece bir şekilde karar vermek için argümanlar kullanmıyorum gibi hissediyorum.