Ada masalah OOP klasik dari metode chaining vs metode "single-access-point":
main.getA().getB().getC().transmogrify(x, y)
vs.
main.getA().transmogrifyMyC(x, y)
Yang pertama tampaknya memiliki keuntungan bahwa masing-masing kelas hanya bertanggung jawab untuk satu set operasi yang lebih kecil, dan membuat semuanya lebih modular - menambahkan metode ke C tidak memerlukan upaya apa pun dalam A, B atau C untuk mengeksposnya.
Kelemahannya, tentu saja, adalah enkapsulasi yang lebih lemah , yang dipecahkan oleh kode kedua. Sekarang A memiliki kendali atas setiap metode yang melewatinya, dan dapat mendelegasikannya ke bidangnya jika diinginkan.
Saya menyadari tidak ada solusi tunggal dan tentu saja tergantung pada konteks, tetapi saya benar-benar ingin mendengar beberapa masukan tentang perbedaan penting lainnya antara kedua gaya, dan dalam keadaan apa saya harus memilih keduanya - karena saat ini, ketika saya mencoba untuk merancang beberapa kode, saya merasa seperti saya tidak menggunakan argumen untuk memutuskan satu atau lain cara.