Aktywne Wpisy
Opad4991 +242
Siema nocna.
Właśnie siedzę przy ojcu który powoli umiera w stanie agonalnym. Zmiana warty z matką o 2:00 w nocy. Dajcie plusa na pocieszenie.
Właśnie siedzę przy ojcu który powoli umiera w stanie agonalnym. Zmiana warty z matką o 2:00 w nocy. Dajcie plusa na pocieszenie.
#programowanie
(S) rozwiązuje dwa problemy jednocześnie.
(O) nie da się rozszerzyć jego funkcjonalności przez dziedziczenie bez modyfikacji istniejącego kodu (klasy odwołują się bezpośrednio do singletonu).
No bo jaka jest różnica, jeśli w miejscu, gdzie definiuję zależności zrobię
final Interface foo = Singleton.getInstance()
vsfinal Interface foo = new NotASingleton()
. W obu przypadkach literka O jest implementowana w taki sam sposób: muszę podmienić tą linięDrugą kwestią jest to że gdyby nawet się dało to wtedy nie jest to singleton
Nie łamie bo singleton może być napisany tak aby miał tylko jedną odpowiedzialność.
Nikt nie broni napisać singletona tak aby był zamknięty na modyfikacje i otwarty na rozszerzenia.
W tym gównie nigdy nie wiem o co chodzi ale raczej jak będziesz miał hierarchię dziedziczących po sobie singletonów to mogą spełniać tę zasadę. Czyli nie modyfikować klas bazowych i być kompatybilne z klasami
@Saly: W sumie zgadzam się, ale jednak są rzeczy które występują w ilości zawsze dokładnie jeden: np. każda apka ma jeden strumień wejścia, jeden runtime (w Javie singleton Runtime), jeden kontekst systemowy trzymający np. ilość dostępnych zasobów itp. Często też dla uproszczenia rzeczy takie jak logowanie czy kontrola dostępu są implementowane jako singleton, choć nie muszą być. Ale najczęściej potrzebne są w
Tak czy owak w tym przypadku nie mówimy o singletonie np. takich strumeni mogę mieć kilka. To co mnie najbardziej razi to połączenie logiki singletonu z samą klasą co zazwyczaj nie ma sensu
System.out
w javie. Chodzi mi o rozdzielenie logiki trzymania globalnej instancji i samej logiki w inne miejsce