конфигурация java / схема передачи параметров

Часто я нахожу необходимость конструировать объекты с настраиваемой функциональностью.

В качестве примера предположим, что я создаю DateIterator . Настраиваемые параметры могут заключаться в том, следует ли повторять закрытый интервал [начало, конец] или открытый интервал [начало, конец) .


  • (1) На мой взгляд, некрасивое решение - ограничено только одной опцией конфигурации true / false
new DateIterator(boolean openInterval);
  • (2) Типичный способ перечисления - обычно немного громоздкий
new DateIterator(Interval.OPEN_END);
  • (3) Нетрадиционная попытка - приятная, но не слишком прямолинейная
new DateIterator().openEnd();
  • (4) Подход наследования - часто чрезмерная инженерия
new OpenEndedDateIterator();

К этому приходит несколько альтернатив, которые я считаю второстепенными, например конфигурация на основе целых чисел new DateIterator (Interval .OPEN_END); или конфигурация на основе свойств.

Есть ли другие подходы? Какой подход вы предпочитаете?

8
задан Johan Sjöberg 29 August 2011 в 12:32
поделиться