Mój projekt zawiera niewielką abstrakcję bazy danych, w której każdą bazę danych zaimplementuję jako Singleton (cóż, object
), z niestandardowymi metodami w bazie danych dla kilku operacji wywoływanych przez kod (jest to głównie analizator składni dziennika, zrzucając interesujące statystyki do baza danych).W Scala, jak dałbym Singletonowi konstruktor?
Chciałbym zbudować klasy baz danych Singleton, jeśli to możliwe, tak aby w czasie wykonywania, każdy był skonstruowany z wartościami konfiguracyjnymi (i te wartości pozostają stałe dla pozostałej części środowiska wykonawczego programu). To pozwoliłoby mi lepiej przetestować kod (ponieważ mogę kpić z baz danych za pomocą Mockito lub innych).
Wciąż uczę się tylko Scali, ale wygląda na to, że nie ma sposobu na dołączenie konstruktora do Singletona, i docenilibyśmy każdy wkład w ten problem - czy jest lepszy sposób na robienie tego, co robię? Czy istnieje jakiś preferowany sposób konstruowania Singleton?
Pozdrawiam z góry za pomoc.
Thanks mnóstwo dla szybkiej reakcji. Obawiam się, że chcę przekazać argumenty konstruktorowi. Ale wracając do tego, zdaję sobie sprawę, jaki to jest brudny hack. Muszę ponownie rozważyć mój projekt. – frio
Tak, to jest hack. Singletony są stanem globalnym, a punktem Scala jest umożliwienie niewidzialnego przetwarzania równoległego. Oznacza to, że nie możesz mieć stanu globalnego. – fishtoprecords
@frio, może być istotne, aby pamiętać, że konstruktor obiektu (ciało) nie jest wykonywany, dopóki nie odniesiesz się do obiektu lub jego zawartości (pól lub metod), która daje pewną kontrolę nad konstrukcją obiektu. –