¿Existe un método o estilo preferido para crear una implementación predeterminada para los métodos de interfaz? Supongamos que tengo una interfaz de uso común donde en el 90% de los casos la funcionalidad que quería es idéntica.Par de implementación de interfaz Java
Mi primer instinto es crear una clase concreta con métodos estáticos. Luego, delegaría la funcionalidad a los métodos estáticos cuando quiera la funcionalidad predeterminada.
Aquí está un ejemplo simple:
Interface
public interface StuffDoer{
public abstract void doStuff();
}
aplicación concreta de métodos
public class ConcreteStuffDoer{
public static void doStuff(){
dosomestuff...
}
}
aplicación concreta funcionalidad usando predeterminado
public class MyClass implements StuffDoer{
public void doStuff(){
ConcreteSuffDoer.doStuff();
}
}
¿Hay un mejor enfoque aquí?
EDITAR
Después de ver algunas de las soluciones propuestas Creo que debería ser más clara acerca de mi intención. Básicamente, estoy tratando de evitar que Java permita la herencia múltiple. También para dejar en claro que no estoy tratando de hacer una declaración acerca de si Java debería permitir herencia múltiple o no. Solo busco la mejor manera de crear una implementación de método predeterminada para las clases que implementan una interfaz.
Espero que logren agregar métodos defensores en Java 7, eso resolvería este problema ... – Landei
Por cierto, así es como se implementan los rasgos (http://codecrafter.blogspot.com/2010/03/scala -traits-under-hood.html) en Scala. –
De hecho, esto es similar a los rasgos que se describen aquí http://stackoverflow.com/questions/263121/java-traits-or-mixins-pattern/16337353#16337353. Para mantener las cosas más cohesionadas, puede mover la clase de implementación predeterminada como una clase anidada de la interfaz como ya se indicó por @Yishai. –