Вечер. У меня возникли проблемы с поиском подходящего шаблона проектирования для некоторых ситуаций с глубокой композицией. Позвольте мне привести пример.
Допустим, у нас есть класс типа Corporation, который имеет много классов типа Subsidiary, которые имеют много классов типа Department, которые по типу содержат множество классов типа Unit, которые, в свою очередь, содержат множество классов типа Employee.
Теперь предположим, что вариант использования заключается в подсчете количества сотрудников для каждой корпорации. Я мог бы перебирать каждую корпорацию, снова зацикливаться для каждой дочерней компании и т. д. и т. д., что привело бы к вложенному циклу глубиной 4 уровня. Кроме того, я бы нарушил Закон Деметры, сославшись на свою цепочку классов несколькими уровнями ниже, что-то, что настолько тесно связано, что сломалось бы в тот же момент, когда я изменил бы свою цепочку.
Еще одна вещь, которую я мог бы сделать, это добавить тонны (хорошо, может быть, не тонны, но несколько) ссылок на ярлыки. Например, корпорация может сама ТАКЖЕ содержать список сотрудников, в результате чего никогда не придется проходить цепочку, чтобы подсчитать их. Таким образом, классы менее тесно связаны (но так ли это?), и теперь проблема заключается в том, как синхронизировать список сотрудников как для корпорации, так и для подразделения. Я мог бы использовать шаблон Observer, чтобы обновлять их, я полагаю, но я действительно чувствую, что что-то ужасно неправильно с этой идеей, или, по крайней мере, я действительно не использую лучшее решение.
Поскольку я почти уверен, что это чрезвычайно распространенная область, может ли кто-нибудь быть достаточно любезен, чтобы указать мне подходящий шаблон проектирования?
Спасибо.