El patrón Composite da una solución elegante a este problema, de la que además resulta en una implementación más sencilla.