Es gibt das klassische OOP-Problem der Methodenverkettung im Vergleich zu "Single-Access-Point" -Methoden:
main.getA().getB().getC().transmogrify(x, y)
vs
main.getA().transmogrifyMyC(x, y)
Die erste scheint den Vorteil zu haben, dass jede Klasse nur für eine kleinere Menge von Operationen verantwortlich ist und alles viel modularer macht - das Hinzufügen einer Methode zu C erfordert keinen Aufwand in A, B oder C, um sie verfügbar zu machen.
Der Nachteil ist natürlich die schwächere Kapselung , die der zweite Code löst. Jetzt hat A die Kontrolle über jede Methode, die es durchläuft, und kann es auf Wunsch an seine Felder delegieren.
Mir ist klar, dass es keine einheitliche Lösung gibt und das hängt natürlich vom Kontext ab, aber ich würde gerne etwas über andere wichtige Unterschiede zwischen den beiden Stilen erfahren und unter welchen Umständen sollte ich einen von beiden bevorzugen - denn gerade jetzt, wenn ich es versuche Zum Entwerfen von Code habe ich das Gefühl, dass ich die Argumente einfach nicht für die eine oder andere Entscheidung benutze.