Luźna definicja: singleton to obiekt,
który posiada tylko jedną instancję w aplikacji. Zwykle stosowany
jaki kontener dla konfiguracji. Dlaczego jedna instancja? Ano
dlatego, by spróbować uniknąć niespójności związanych z tym,
że różne obiekty posiadają nieaktualne informacje dot. wartości
w nim przechowywanych np. poprzez przekazywanie obiektu konfiguracji przez parametr. Dodatkowy problem stanowią próby
aktualizacji wartości Singletona tak, by przy odczycie w innym
miejscu programu dostać je spójne, a nie zaktualizowane częściowo.
Pusty Singleton w Java:
public
enum MySingleton {
INSTANCE;
}
W Clojure wartości obiektów można
zmieniać tylko w trnsakcji. Najprostszą konstrukcją zapewniającą
funkcjonalność Singletona jest atom.
Pusty atom w Clojure:
(def
MySingleton (atom nil))