Language Średniozaawansowany

Wyodrębnij współdzieloną logikę w interfejsach używając metod prywatnych.

✕ Java 8
interface Logger {
    default void logInfo(String msg) {
        System.out.println(
            "[INFO] " + timestamp() + msg);
    }
    default void logWarn(String msg) {
        System.out.println(
            "[WARN] " + timestamp() + msg);
    }
}
✓ Java 9+
interface Logger {
    private String format(String lvl, String msg) {
        return "[" + lvl + "] " + timestamp() + msg;
    }
    default void logInfo(String msg) {
        IO.println(format("INFO", msg));
    }
    default void logWarn(String msg) {
        IO.println(format("WARN", msg));
    }
}
Widzisz problem z tym kodem? Daj nam znać.
🧩

Ponowne użycie kodu

Współdziel logikę między metodami domyślnymi bez duplikacji.

🔐

Enkapsulacja

Szczegóły implementacji pozostają ukryte przed klasami implementującymi.

🧹

Interfejsy DRY

Koniec z kopiuj-wklej między metodami domyślnymi.

Stare podejście
Powielona logika
Nowoczesne podejście
Metody prywatne
Od JDK
9
Poziom trudności
Średniozaawansowany
Prywatne metody interfejsów
Dostępne

Szeroko dostępne od JDK 9 (wrzesień 2017)

Java 9 umożliwia prywatne metody w interfejsach, co pozwala współdzielić kod między metodami domyślnymi bez ujawniania szczegółów implementacji klasom implementującym.