Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> java

Java 9 Private Interface Methods: инкапсуляция и повторное использование кода

До Java 8 интерфейсы могли содержать только константы и абстрактные методы. Java 8 добавила default и static методы. Java 9 добавила private и private static методы в интерфейсах для устранения дублирования кода в default-методах.

Эволюция: до Java 8

Каждый класс-реализатор дублировал логику логирования (подключение к БД, закрытие).

Java 8: default и static методы в интерфейсе

Логика вынесена в интерфейс, но повторяется в каждом default-методе (getConnection(), closeConnection() вызываются в каждом).

Java 9: private методы в интерфейсе

Теперь можно вынести общую логику в private метод интерфейса:

interface Logging {
    String ORACLE = "Oracle_Database";
    String MYSQL = "MySql_Database";

    private void log(String message, String prefix) {
        getConnection();
        System.out.println("Log Message : " + prefix);
        closeConnection();
    }

    default void logInfo(String message) { log(message, "INFO"); }
    default void logWarn(String message) { log(message, "WARN"); }
    default void logError(String message) { log(message, "ERROR"); }
    default void logFatal(String message) { log(message, "FATAL"); }

    private static void getConnection() { System.out.println("Open Database connection"); }
    private static void closeConnection() { System.out.println("Close Database connection"); }
}

Классы-реализаторы (LogOracle, LogMySql) становятся пустыми. Вызов методов даёт тот же результат, но без дублирования.

Резюме типов методов в интерфейсах

ВерсияДопустимые члены
До Java 8Константы, абстрактные методы
Java 8+ default методы, static методы
Java 9+ private методы, private static методы

Private методы в интерфейсах позволяют следовать DRY (Don't Repeat Yourself) и инкапсулировать вспомогательную логику.

java

  1. Методы в Java: как определять, вызывать и эффективно использовать
  2. Абстрактные классы и методы в Java: полное руководство
  3. Интерфейсы в Java: концепции, реализация и лучшие практики
  4. Освоение интерфейса NavigableSet в Java: навигация, сортировка и практические примеры
  5. Освоение Java Lambda-выражений: от основ к Stream API
  6. Java String toLowerCase() и toUpperCase(): преобразование регистра с учётом локали
  7. Интерфейсы в Java: определение, использование и лучшие практики
  8. Отправка email в Java: пошаговое руководство
  9. Java 9 Collection Factory Methods: удобное создание неизменяемых List, Set, Map
  10. Java 8 Default Methods: улучшение интерфейсов и обратная совместимость