Singleton a statiki

0

Czy jest jakas wytyczna kiedy powinno sie uzywac singletonow a kiedy klasy, ze statycznymi metodami?

1

Zakładam ze przez singleton rozumiesz jakis bezstanowy serwis?

  1. Kiedy istnieje spora szansa na potrzebe "podmiany" implementacji tego obiektu. Np. jeśli to są jakieś utilsy związane ze Stringami (obcinanie spacji na końcu itp) to widać ze jest to raczej mało prawdopodobne więc spokojnie można tam sobie robić statici
  2. Kiedy logika w tych metodach statycznych jest prosta i nie wymaga jakiegoś skomplikowanego setupu do działania. Pamiętaj że static trudno będzie w teście mockować (da się, ale to spory hardkor) więc najpewniej będą wywoływane "normalnie". I znów jeśli to są proste rzeczy typu jakieś FilenameUtils (wyciąganie rozszerzenia pliku, wyciąganie parent directory itp) to nie ma problemu, ale jeśli jest tam jakaś złożona logika którą wolałbyś w testach mockować i testować osobno to static się nie sprawdzi.
2

Singletony: cache, konfiguracja aplikacji (np. wczytana z pliku zaraz po uruchomieniu), klasy które nie są statyczne, bo mają jakieś niestatyczne zależności, ale w aplikacji wystarczy jedna ich instancja.
Statyczne metody: każda operacja, która nie jest powiązana ze stanem obiektu klasy, w której się znajduje.

1 użytkowników online, w tym zalogowanych: 0, gości: 1