Існує класична проблема OOP методу ланцюга методів проти методів "єдиної точки доступу":
main.getA().getB().getC().transmogrify(x, y)
проти
main.getA().transmogrifyMyC(x, y)
Перший, мабуть, має перевагу в тому, що кожен клас відповідає лише за менший набір операцій, і робить все набагато більш модульним - додавання методу до C не вимагає жодних зусиль в A, B або C для його викриття.
Мінусом, звичайно, є слабша інкапсуляція , яку вирішує другий код. Тепер A має контроль над кожним методом, який проходить через нього, і може делегувати його у свої поля, якщо цього хоче.
Я усвідомлюю, що немає єдиного рішення, і, звичайно, це залежить від контексту, але я дуже хотів би почути деякі відомості про інші важливі відмінності між двома стилями, і за яких обставин я повинен віддавати перевагу одному з них - тому що саме зараз, коли я намагаюся щоб створити якийсь код, я відчуваю, що я просто не використовую аргументи, щоб вирішити той чи інший спосіб.