Я не вижу никакой сплоченности, чтобы иметь рабочий метод резки древесины.Обрезка выполняется на дереве и, следовательно, должна быть частью класса дерева.Предположительно, вырубка дерева также повлечет за собой изменение некоторого внутреннего состояния класса дерева.
Рабочий должен вызвать метод вырубки на любом дереве, которое он хочет, а не на дереве, сообщающем работникучто он должен сократить это.Если вы хотите абстрагировать это, как намекнул Ханс, вы можете создать интерфейс ICuttable для метода Cut и сделать так, чтобы ваше дерево его реализовало.
Рассмотрим что-то, с чем вы знакомы, String
.Когда вы хотите вырезать строку (split), вы не определяете метод splitString в каждом объекте, который собирается это сделать.Независимо от того, какой объект решит разделить строку, происходит одно и то же - и обычно для этого нужно знать внутренности целевого объекта (строки).Многие другие объекты просто вызывают метод split строки.Строковый объект обладает высокой связностью - потому что его методы способствуют выполнению общей задачи - манипулированию строками.
Я не понимаю, как резка дерева вносит большой вклад в сам рабочий объект.