Ejemplo:
Quiero hacer la mayor parte de los componentes tienen un determinado color de fondo y color de primer plano determinado, y quiero cambiarlo si por defecto en color parece fuera. métodos primarios para lograr esto son setBackgroundColor () y setForegroundColor ().
La mayor respuesta plausible para mí es:
public class DefaultComponent {
private static final BACKGROUND_COLOR = Color.GRAY;
private static final FOREGROUND_COLOR = Color.WHITE;
public static void setComponent(Component comp) {
comp.setBackground(backgroundColor);
comp.setForeground(foregroundColor);
}
}
Es este el enfoque correcto? También hay un nombre especial para tal una construcción, como por ejemplo en la fábrica?
Sí, su diseño sugiere que usted necesita una abstracción. El comportamiento común de ciertos métodos se puede encerrar en la clase abstracta, y los métodos específicos se llevará a cabo por las clases concretas.
public abstract class GenericComponent {
private static final BACKGROUND_COLOR = Color.GRAY;
private static final FOREGROUND_COLOR = Color.WHITE;
public static void setComponent(Component comp) {
comp.setBackgroundColor(backgroundColor);
comp.setForegroundColor(foregroundColor);
}
//here provide a list of abstract methods that each extension class will implement.
}
Como se trata de una clase abstracta, no se pueden crear instancias. Usted tendrá que tener por lo menos una extensión concreta, y crear instancias de esa.