Un nuevo colaborador mío que estaba revisando algo de código que había escrito me dijo que no estaba acostumbrado a ver las interfaces utiliza directamente en código Java, por ejemplo:estilo de código Java - Interfaces vs. clases abstractas
public interface GeneralFoo { ... }
public class SpecificFoo implements GeneralFoo { ... }
public class UsesFoo {
GeneralFoo foo = new SpecificFoo();
}
lugar, esperando ver
public interface GeneralFoo { ... }
public abstract class AbstractFoo implements GeneralFoo { ... }
public class SpecificFoo extends AbstractFoo { ... }
public class UsesFoo {
AbstractFoo foo = new SpecificFoo();
}
puedo ver cuando este patrón tiene sentido, si toda la funcionalidad SpecificFoos social mediante AbstractFoo, pero si los diversos Foos tienen completamente diferentes implementaciones internas (o no nos importa cómo un Foo do Bar específico, siempre que lo haga), ¿hay algún daño? n usar una interfaz directamente en el código? Me doy cuenta de que esto es probablemente una cosa de tomate/tomate hasta cierto punto, pero tengo curiosidad por saber si hay una ventaja para el segundo estilo, o desventaja para el primer estilo, que me estoy perdiendo.
posible duplicado de [Interfaz vs clase base] (http://stackoverflow.com/questions/56867/interface-vs-base-class) – thecoop
@thecoop: casi un duplicado de ese, pero todavía no es . Éste compara la clase de interfaz frente a la clase de clase base de interfaz, y la otra compara clase de interfaz frente a clase de clase base. Además, este es específico de Java. –
¡Suena como un dolor dogmático en el culo! – Jonathan