Какой шаблон проектирования применяется при реализации методов Temporal - PullRequest
0 голосов
/ 04 мая 2018

В пакете даты и времени java.time методы, особенно plus(TemporalAmount amount) и minus(TemporalAmount amount), в интерфейсе Temporal реализованы в LocalDate, LocalTime, LocalDateTime и т. Д. Исходный код реализации в OpenJDK умный и хитрый.

Рассматривая LocalTime.plus(TemporalAmount amount) в качестве примера, метод реализуется путем вызова метода addTo параметра amount:

(LocalTime) amountToAdd.addTo(this)

С другой стороны, при детализации до реализации метода addTo, например, Duration, перегруженный метод plus параметра Temporal называется:

if (seconds != 0) {
      temporal = temporal.plus(seconds, SECONDS);
} if (nanos != 0) {
      temporal = temporal.plus(nanos, NANOS);
}

Кажется, здесь используются некоторые шаблоны проектирования. Может ли кто-нибудь сказать , какой шаблон проектирования используется в упомянутой реализации? или это своего рода гидрид нескольких шаблонов дизайна?

1 Ответ

0 голосов
/ 04 мая 2018

Если таковые имеются, я бы сказал, Strategy будет применяться. Поскольку, по сути, вы говорите, что я позволю вам предоставить средства для выполнения дифференциальных вычислений, мне все равно, как это делается, а затем вы можете подключиться к дополнительному аппарату, который у нас здесь (операторы). Вид FP-версии Стратегии (которая уже довольно дружественна к FP).

...