, если File является корневым классом, а папка наследует File, папка может содержать коллекцию файлов
Это по сути шаблон Composite, даже если вы не называете его таким образом: -)
За исключением того, что в вашем варианте Папка будет наследовать специфичные для файла функции, которые она не может (или, что еще хуже, не должна) использовать.Таким образом, вы усложняете реализацию, чтобы, например, клиенты не могли добавлять байты в «конец» вашей папки и т. Д.
FYI, продолжение книги GoF, Pattern Hatching, обсуждает реализацию файловой системы с использованием различных шаблонов, в том числе Composite.Настоятельно рекомендуется прочитать.