Java: реализация суперкласса по умолчанию, который будет устанавливать члены для всех подклассов - PullRequest
0 голосов
/ 15 сентября 2018

Пример:

Я хочу, чтобы у большинства компонентов был определенный цвет фона и определенный цвет переднего плана, и я хочу изменить его, если цвет по умолчанию отключен. Основными методами для достижения этой цели являются setBackgroundColor () и setForegroundColor ().

Самый правдоподобный ответ для меня:

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);
  }
}

Это правильный подход? Также есть ли специальное название для такой конструкции, например, в Factory?

1 Ответ

0 голосов
/ 15 сентября 2018

Да, ваш дизайн предполагает, что вам нужна абстракция. Общее поведение определенных методов может быть заключено в абстрактный класс, а конкретные методы будут реализованы конкретными классами.

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.
}

Поскольку это абстрактный класс, его нельзя создать. Вам нужно иметь хотя бы одно конкретное расширение и создавать его экземпляры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...