Inicialmente, queríamos implementar um padrão de estratégia com implementações variadas dos métodos em uma interface comum. Eles serão coletados em tempo de execução com base nas entradas do usuário.
Como se viu, estamos tendo classes abstratas implementando 3 a 5 métodos comuns e resta apenas um método para uma implementação variável, ou seja, a estratégia.
Atualização: Por muitas classes abstratas, quero dizer, existem 6 funcionalidades diferentes de alto nível, ou seja, 6 pacotes, e cada uma possui sua Interface + AbstractImpl + (série de Actual Impl).
Esse é um design ruim de alguma forma?
Quaisquer pontos de vista negativos em termos de extensibilidade posterior - Estou me preparando para uma revisão de código / design com idosos.
fonte