Istnieje klasyczny problem OOP łączenia łańcuchów metod z metodami „pojedynczego punktu dostępu”:
main.getA().getB().getC().transmogrify(x, y)
vs
main.getA().transmogrifyMyC(x, y)
Pierwszy wydaje się mieć tę zaletę, że każda klasa odpowiada tylko za mniejszy zestaw operacji i czyni wszystko o wiele bardziej modułowym - dodanie metody do C nie wymaga żadnego wysiłku w A, B lub C, aby ją ujawnić.
Minusem jest oczywiście słabsza enkapsulacja , którą rozwiązuje drugi kod. Teraz A ma kontrolę nad każdą metodą, która przez nią przechodzi, i może delegować ją do swoich pól, jeśli chce.
Zdaję sobie sprawę, że nie ma jednego rozwiązania i oczywiście zależy to od kontekstu, ale naprawdę chciałbym usłyszeć jakieś uwagi na temat innych ważnych różnic między tymi dwoma stylami i pod jakimi warunkami powinienem preferować którykolwiek z nich - ponieważ teraz, kiedy próbuję aby zaprojektować jakiś kod, wydaje mi się, że po prostu nie używam argumentów do decydowania w ten czy inny sposób.