Problem z cyklu egzystencjonalnych.
Po co tworzyć klasy dające się zainicjować poprzez metodą statyczna: MyClass.of(args)
zamiast new MyClass(args)
.
Problem z cyklu egzystencjonalnych.
Po co tworzyć klasy dające się zainicjować poprzez metodą statyczna: MyClass.of(args)
zamiast new MyClass(args)
.
Np. cache. Np. klasa Integer ma cache na małe wartości (do 128) bo są często używane i w ten sposób drastycznie obniża się potrzebną pamięć. Analogicznie klasa String ma wewnętrzny cache dla wartości.
Konstruktor nie ma nazwy, metoda statyczna ma i dodaje to kontekst np masz Foo.from()
, Foo.inMemory()
Foo.fromX()
itp.
Drugie, możesz cachować duże obiekty
Trzecie, możesz zwracać podklasy danej klasy, a nie koniecznie obiekt danej klasy. Możesz nawet wystawiać jedynie interface publiczny i z metod statycznych zwracać konkretne implementacje o których klient nawet nie wie. A im mniej wie, tym lepiej śpi.