Шаблон разработки для реализации по умолчанию с пустыми методами

Похоже, что Java пытается преобразовать пустую строку в число. У Вас есть пустая строка в конце серии чисел?

Вы могли, вероятно, зафиксировать код как это

String s = in.readLine();
int i = 0;

while (s != null) {
    // Skip empty lines.
    s = s.trim();
    if (s.length() == 0) {
        continue;
    }

    tall[i] = Integer.parseInt(s); // This is line 19.
    System.out.println(tall[i]);
    s = in.readLine();
    i++;
}

in.close();
21
задан Greg Chabala 3 June 2016 в 19:05
поделиться

5 ответов

Для реализации по умолчанию нет шаблонов проектирования.

Я обычно добавляю префикс DoNothing к имени класса. В зависимости от цели я также использую Base или Default (последний широко используется). Вероятно, MouseAdapter следует называть DefaultMouseListener .

Если вам интересно, вы можете систематически заглушить интерфейс с помощью простого DynamicProxy , вы должны вернуть только «хорошее» значение по умолчанию (ноль для объекта, 0 для числового и т. Д.).

Кстати, это очень хороший вопрос.

РЕДАКТИРОВАТЬ

Кроме того, это не заглушка или макет : может быть, его можно спутать с заглушкой, но намерение другое.

4
ответ дан 29 November 2019 в 22:07
поделиться

Я видел, как этот дизайн использовался весной, когда у них был класс с именем FlowExecutionListenerAdapter , который избавляет вас от реализации всех операций FlowExecutionListener.

Однако это звучит как Нулевой шаблон объекта тоже. Однако я считаю, что в мире адаптеров он лучше подходит просто потому, что он меняет поведение интерфейса, позволяя вам реализовать только тот бит, который вам нужен ... но это сложный вопрос.

Я уверен, что этот вопрос был задан раньше?

Это звучит похоже нет? Возможно, стоит прочитать.

2
ответ дан 29 November 2019 в 22:07
поделиться

Он также используется в Swing (WindowAdapter, который реализует WindowListener). Это всего лишь удобный адаптер, вам нужно определить только 1-2 метода таким образом, чтобы получить полезный слушатель окон. Это действительно образец шаблона адаптера, который также показывает мощь абстрактных классов. Это даже пример, иллюстрирующий, почему иногда бывает полезно наследование множественных реализаций.

Что касается обычных шаблонов проектирования, в методе Temlate вы можете определять операции перехвата, которые могут быть переопределены (в отличие от абстрактных методов, которые должны быть), но поведение по умолчанию (обычно NO-OP) тоже имеет значение.

2
ответ дан 29 November 2019 в 22:07
поделиться

Мне это кажется наиболее близким к шаблону Особый случай или Нулевой объект .

В ваших обновлениях предлагается нечто похожее на Шаблонный метод ожидают, что у вас нет единственного метода, который вызывает каждый метод шаблона, например

public void doEverything()
{
  doThis();
  doThat();
  done();
}
0
ответ дан 29 November 2019 в 22:07
поделиться

Вы спрашиваете о шаблоне нулевого объекта ?

В дополнение к вашему изменению объект MyClass является не чем иным, как реализацией по умолчанию. Я не думаю, что есть какой-то конкретный шаблон дизайна, который это описывает.

0
ответ дан 29 November 2019 в 22:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: