У меня есть вопрос о двух операциях, которые вы часто видите в примере схемы составного класса.
* GetDescidents
* GetChild(int)
Распространенным примером являются файлы и каталоги, я буду придерживаться этого. Допустим, интересующей нас операцией является Size, поэтому File имеет реальный размер, а Directory имеет Size, полученный в результате рекурсивной итерации GetDescidents. Все идет нормально. Мой вопрос связан с использованием клиентом GetDescidents. Скажем, вам нужны файлы в каталоге, которые являются изображениями для некоторой данной операции. Таким образом, на практике вы используете некоторую комбинацию GetDescidents и Children для возврата файлов изображений (в зависимости от того, нужны ли клиенту все вложенные файлы изображений или только на корневом уровне).
Итак, вопрос номер один: не лучше ли использовать метод GetImageFiles для композита, а не заставлять клиента разбираться в этом? И если это так, будет ли GetDescidents когда-либо практичным для предоставления клиентским вызывающим объектам (например, ImageViewer) вне композиции?
Второй вопрос о GetChild(int); является ли int индексом порядкового номера для возврата одного дочернего элемента? Уровень глубины в GetDescidents? Что может быть примером того, как клиент будет использовать этот метод?
С уважением,
Беррил