digital-garden/dev/java/Статическая фабрика в Java.md
Struchkov Mark 8ce575f586
All checks were successful
continuous-integration/drone/push Build is passing
Статическая фабрика.md
2024-10-06 19:34:40 +03:00

3.7 KiB
Raw Blame History

aliases tags date zero-link parents linked
maturity/🌱
2024-10-06

../other/Статическая фабрика в 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);
    }
}

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


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

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

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

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