Статическая фабрика в Java — это метод, который возвращает экземпляры класса, но вместо создания объектов через конструктор, используется статический метод. Такой подход дает разработчику гибкость в процессе создания объектов, возможность кэширования и возвращения уже созданных экземпляров, а также улучшает читаемость кода за счет осмысленных имен методов, таких как of() или valueOf().

Статическая фабрика часто используется для реализации паттернов, таких как Singleton, а также для создания объектов, требующих дополнительной логики при инициализации.

Рассмотрим простой пример создания объекта с помощью статической фабрики:

public class Foo {
    private int value;
 
    // Приватный конструктор
    private Foo(int value) {
        this.value = value;
    }
 
    // Статический фабричный метод
    public static Foo of(int value) {
        return new Foo(value);
    }
 
    // Другой статический метод
    public static Foo doubleCreate(int value) {
        return new Foo(value * value);
    }
}

Здесь конструктор класса Foo является приватным, и доступ к нему осуществляется через два статических метода: of() для простого создания объекта и doubleCreate(), который создает объект с модифицированным значением.

Теперь рассмотрим пример с кэшированием, чтобы избежать создания новых объектов при одинаковых параметрах:

import java.util.HashMap;
import java.util.Map;
 
public class Foo {
    private static final Map<Integer, Foo> cache = new HashMap<>();
    private int value;
 
    private Foo(int value) {
        this.value = value;
    }
 
    // Статический фабричный метод с кэшированием
    public static Foo of(int value) {
        if (!cache.containsKey(value)) {
            cache.put(value, new Foo(value));
        }
        return cache.get(value);
    }
}

В этом примере используется кэширование: если объект с определенным значением уже был создан, статическая фабрика возвращает его из кэша, а если нет — создает новый и сохраняет его для дальнейшего использования.


Мета информация

Область:: 00 Java разработка
Родитель:: Статическая фабрика
Источник::
Создана:: 2024-10-06
Автор::

Дополнительные материалы

Дочерние заметки