3.7 KiB
aliases | tags | date | zero-link | parents | linked | |
---|---|---|---|---|---|---|
|
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 Автор::