В пакете даты и времени 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);
}
Кажется, здесь используются некоторые шаблоны проектирования. Может ли кто-нибудь сказать , какой шаблон проектирования используется в упомянутой реализации? или это своего рода гидрид нескольких шаблонов дизайна?