Ao desenvolver no OOP, algumas vezes uma interface / contrato é fornecida por uma biblioteca que você não pode alterar. Vamos chamar essa interface J.
Agora você tem um objeto da classe A que consome objetos que implementam essa interface. Dentro de Apenas uma pequena parte das definições da interface é necessária. Algumas das classes de objetos são criadas por mim durante o projeto (vamos chamar uma delas de tipo D), portanto há uma sobrecarga na implementação de tudo dentro da interface J.
Eu quero implementar um subconjunto da funcionalidade na interface J, mas minhas soluções até agora não me satisfazem:
- implementar todos os aspectos de J e depois lançar "notImplementedExceptions" desinforma o usuário dos meus objetos: parece que meus objetos do tipo D estão em conformidade com a interface J, mas não - e outros consumidores dos meus objetos (que aceitam objetos que implementam a interface J) não pode confiar na integridade dos meus objetos.
- A implementação de uma interface recém-definida me proíbe de usar objetos que implementam apenas a interface J, embora a interface J seja totalmente compatível com minha própria interface.
- Permitir que meus objetos personalizados implementem a interface J criaria uma sobrecarga significativa, porque eles não precisam de toda essa funcionalidade.
Quando eu era capaz de alterar a interface J, eu criava uma "super interface" K que tinha esse subconjunto da funcionalidade da interface J e fazia a interface J herdar da interface K. Mas não posso alterar a interface J.
O que é uma solução orientada a objetos para esse problema? A melhor solução ainda está implementando a interface "justa" J? Ou existem maneiras de "superclasse" de uma interface sem alterá-la?