Las interfaces dedicadas parecen ser una buena manera de exponer las características opcionales en una jerarquía de tipos específica de dominio. Sin embargo, impiden el uso de patrones decoradores y compuestos, que también es común en este tipo de jerarquía.
Especialmente, probablemente nadie quiera implementar un decorador / compuesto para cada combinación posible de estas interfaces, por lo que la mayoría de las veces implementan todas las interfaces opcionales y utilizan la verificación de tipo para reenviar selectivamente las llamadas, lo que anula el propósito de tener interfaces separadas.
Una alternativa, que utiliza el marco de Java Collection, es incluir todas las operaciones en el tipo base y simplemente llenarlas con implementaciones ficticias. Los métodos predeterminados en Java 8 facilitan aún más este uso.
En cierto modo, esto se siente como el debate de columnas anulables en el mundo de la base de datos. ¿Hay algún argumento fuerte contra el último enfoque más práctico?