Существует классическая проблема ООП цепочки методов по сравнению с методами с одной точкой доступа:
main.getA().getB().getC().transmogrify(x, y)
против
main.getA().transmogrifyMyC(x, y)
Первый, кажется, имеет то преимущество, что каждый класс отвечает только за меньший набор операций и делает все намного более модульным - добавление метода к C не требует никаких усилий в A, B или C для его раскрытия.
Недостатком, конечно, является более слабая инкапсуляция , которую решает второй код. Теперь A имеет контроль над каждым методом, который проходит через него, и может делегировать его своим полям, если он этого хочет.
Я понимаю, что не существует единого решения, и оно, конечно, зависит от контекста, но мне бы очень хотелось услышать некоторую информацию о других важных различиях между этими двумя стилями и при каких обстоятельствах я бы предпочел один из них - потому что прямо сейчас, когда я пытаюсь чтобы создать какой-то код, я чувствую, что просто не использую аргументы, чтобы решить так или иначе.