TGViewer
Java Portal | Программирование Java Portal | Программирование @java_iibrary · 11.6K subscribers
Post #1553 2.26K
Креативные (нетрадиционные) способы использования интерфейсов в Java

1) Конфигурация на основе интерфейсов (расширение паттерна Strategy)

Вместо использования конфигурационных файлов или enum для выбора поведения на лету (что считается классическим подходом), можно использовать интерфейсы для инкапсуляции различных конфигураций.

🔸Инкапсулируется поведение, а не просто значения.
🔸Позволяет менять поведение динамически в рантайме, подставляя разные реализации.

2) Интерфейсы для method chaining с условным выполнением

Интерфейсы могут быть использованы для построения цепочек вызовов методов с возможностью условного выполнения. Это позволяет динамически пропускать определённые вызовы.

Используется при создании fluent API, где некоторые методы должны выполняться только при выполнении условий.
Это:

🔸Делает код более читаемым и выразительным.
🔸Избегает ненужных вызовов, если условие не выполнено.

Традиционный аналог:

if (conditionMet) {
obj.doSomething();
obj.doAnotherThing();
}


3) Маркировочные (tagging/marker) интерфейсы с проверкой по типу

Пустые интерфейсы можно использовать для "тегирования" классов и принятия решений во время выполнения или компиляции.

Это позволяет выполнять определённые действия, если класс реализует конкретный marker-интерфейс.

🔸Чистое разделение ролей без добавления логики
🔸Хорошо сочетается с reflection и generics

4) Наследование интерфейсов для реализации поведения по умолчанию

Интерфейсы с default-методами можно использовать для композиции переиспользуемой логики.

Применяется, когда нужно разделить общее поведение между разными классами, не прибегая к наследованию от общего базового класса.

👉 Java Portal
  • 👍 8
  • ❤ 1
More from @java_iibrary
  1. Oct 1, 2026Spring Boot 4: приближение срока истечения SSL-сертификатов больше не меняет статус health…
  2. Sep 30, 2026Почему один и тот же Java-файл .class запускается на Windows, Linux и macOS без перекомпил…
  3. Sep 30, 2026Docker прост, пока всё работает. Но что делать, если контейнер постоянно перезапускается,…
  4. Sep 29, 2026Эволюция языков программирования 1940-е → Машинный код ⬇️ 1950-е → Ассемблер ⬇️ 1960-е → F…
  5. Sep 29, 2026Большинство Java-разработчиков используют эти термины каждый день. Удивительно, но многие…
  6. Sep 28, 2026💡 Java: не создавайте ресурсоёмкие объекты, пока они действительно не понадобятся. ✅ Иниц…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →