O exemplo do mundo real

Uma pasta contém arquivos e outras pastas. Para calcular tamanho ou exibir conteúdo, o programa não deveria precisar ramificar a cada nível da árvore. A pasta agrega filhos; o arquivo é uma folha.

Exemplo em C#

public interface IItem
{
    long TamanhoEmBytes();
}
public sealed record Arquivo(long Bytes) : IItem
{
    public long TamanhoEmBytes() => Bytes;
}
public sealed class Pasta(IEnumerable<IItem> itens) : IItem
{
    public long TamanhoEmBytes() => itens.Sum(x => x.TamanhoEmBytes());
}

A mesma operação recursiva funciona tanto em um arquivo quanto numa pasta composta por outros componentes.

Cuidados

Defina regras de ciclo de vida, remoção, referências cíclicas e operações que fazem sentido em folhas. Se a interface comum ficar cheia de métodos inválidos para arquivos, modele abstrações mais específicas. Compare com Decorator, que envolve um objeto para acrescentar comportamento; veja o guia GoF.