Я бы сказал, что это не очень характерно Chain Of Responsibility
.Единственная причина, по которой вам нужен указатель на структуру родительского контейнера, заключается в размещении функциональности родительского контейнера в пределах досягаемости содержащихся элементов.Таким образом, может рассматриваться как деталь реализации, необходимая для того, чтобы запрос мог обрабатывать "цепочку" до тех пор, пока он не будет обработан на правильном "уровне".Содержащиеся отношения, этот «правильный» уровень - это всего лишь один уровень вверх, а нарастание не проходит через достаточно уровней (поскольку существует только один уровень), чтобы вызвать большой интерес в качестве идеального примера шаблона.Тем не менее, общие идеи, стоящие за Chain of Responsibility
, остаются в силе;запрос делается в той точке цепочки, которая не может его обработать, и обрабатывается в другой точке изменения, которое может.
При небольшом неуниверсальном отношении «контейнер / содержимое» соединение этих двухзвено цепи может стать довольно тесным.Например, в ваших примерах отсутствует общая структура обработки «команд» (так как набор командного языка невелик), и такая среда обычно требует (для безопасности типов) объект Command / Message.Это большая нагрузка для списка, который просто хочет позволить своим элементам напрямую уведомлять на уровне элементов, что они хотят удалить его из списка.
И да, есть страница шаблона C2за это ... Если вы согласны с моими рассуждениями.