Interfaces dedicadas parecem ser uma boa maneira de expor os recursos opcionais em uma hierarquia de tipos específicos de domínio. No entanto, eles impedem o uso de decorador e padrões compostos, o que também é comum nesse tipo de hierarquia.
Especialmente, provavelmente ninguém deseja implementar um decorador / composto para cada combinação possível dessas interfaces; portanto, mais frequentemente, eles implementam todas as interfaces opcionais e usam a verificação de tipo para encaminhar seletivamente as chamadas, o que anula o propósito de ter interfaces separadas.
Uma alternativa, que a estrutura Java Collection usa, é incluir todas as operações no tipo base e preenchê-las com implementações fictícias. Os métodos padrão no Java 8 facilitam ainda mais esse uso.
De certa forma, isso parece o debate das colunas anuláveis no mundo dos bancos de dados. Existe algum argumento forte contra a última abordagem mais prática?