возможно, мы говорим о разных вещах. я предполагаю, что составной шаблон как описано на http://en.wikipedia.org/wiki/Composite_pattern
для этого шаблона вы не будете предоставлять операции, которые не применяются к конечному узлу, например AddChild
(ваш пример), потому что интерфейс Component
(с использованием имен из статьи в Википедии) предназначен для предоставления только общие действия, которые могут быть выполнены на листе или узле. поэтому нет необходимости в значениях по умолчанию.
есть класс add()
в классе Composite
в статье в Википедии, но это значит добавить что-то в составное «представление», а не в какую-либо конкретную структуру данных. другими словами, вы можете получить доступ к некоторым частям дерева данных через составной интерфейс, но метод add()
в интерфейсе добавляет или удаляет элементы из этой коллекции, а не из самого дерева.