Где в Java встречаются паттерны проектирования?

«Где в Java встречаются паттерны проектирования?» — вопрос из категории Паттерны, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Паттерны проектирования активно используются в стандартной библиотеке Java и популярных фреймворках.

Примеры из Java SE:

  • Singleton: Runtime.getRuntime(), java.lang.System.
  • Factory Method: Calendar.getInstance(), Collections.unmodifiableList().
  • Observer (устаревший): java.util.Observable и события в Swing (ActionListener).
  • Decorator: Классы в java.io, например, BufferedReader(new FileReader(...)).
  • Iterator: Интерфейс java.util.Iterator, возвращаемый методом List.iterator().

Пример реализации Singleton:

public class Singleton {
    private static final Singleton INSTANCE = new Singleton();

    private Singleton() {}

    public static Singleton getInstance() {
        return INSTANCE;
    }
}

Примеры в фреймворках:

  • Spring: @Bean (Factory), @Controller (MVC).
  • Hibernate: Прокси-объекты для ленивой загрузки (Proxy).

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