Во-первых, если вы сохраните все созданные экземпляры, это называется утечкой. Я продолжу предполагать, что вы имеете в виду неосновную ссылку, ограниченный или какой-то такой кеш, а также что Shoe
является неизменным.
Просто используйте метод static
, чтобы вернуть фабрику.
public final class Shoe implements Footwear {
private static final FootwearFactory<Shoe,Something> FACTORY =
new FootwearFactory<Shoe,Something>() {
...
public Shoe get(Something value) {
value = new Something(value);
...
return new Show(value);
}
};
private static FootwearFactory<Shoe,Something> getFactory() {
return FACTORY;
}
private final Something value;
private Shoe(Something value) {
this.value = value;
}
...
}