Wpis z mikrobloga

Hej!
Zacznę od kilku słów wprowadzających. Nie mam lekkiego pióra i czasem mogę popełniać różne błędy. Wybaczcie korygujcie będziemy to załatwiać na bieżąco ( ͡° ͜ʖ ͡°)
Druga sprawa jest taka, że nie spodziewałem się takiego odzewu. Wpis był głównie pod #naukaprogramowania i chyba zlecieli się wszyscy co do sztuki ( ͡°( ͡° ͜ʖ( ͡° ͜ʖ ͡°)ʖ ͡°) ͡°) A więc czas zacząć!

#pytanianadeva 1/01/18

1.**Wzorce projektowe: Singleton
Pytanie o wzorce projektowe pojawia się prawie zawsze. W tym przypadku
singleton jest antywzorcem. Singleton z definicji matematycznej to zbiór jednoelementowy czyli taki do którego należy tylko jeden element. W programowaniu oznacza to jedno: Jedna instancja i globalny dostęp do obiektu.
No dobra skoro jest on taki anty to po co jest i dlaczego w ogóle go używać? Tutaj nasuwają mi się dwie propozycje:
- Kiedy np. implementujemy obiekt, którego zadaniem jest przechowywanie o stanie np. o stanie aplikacji.
- Kiedy chcemy przechowywać zmienne, które są wspólne dla aplikacji.

Implementacja:
------------------------------------
public final class Singleton {
private static final Singleton INSTANCE = new Singleton();

private Singleton() {}

public static Singleton getInstance() {
return INSTANCE;
}
}
------------------------------------

2.
Unit Testing: @Before i @BeforeClass_ || @BeforeEach i @BeforeAll
Do czego nam służy adnotacja
@Before? kod oznaczony tą adnotacją zostanie wykonany zawsze przed każdym testem w danej klasie.
Do czego nam służy adnotacja
@BeforeClass? kod oznaczony tą adnotacją zostanie wykonany raz przed uruchomieniem testów w danej klasie.
Ok ale mamy jeszcze dwie adnotacje.
@BeforeEach i @BeforeAll. Czym się one wszystkie różnią i kiedy której używać? Różnica jest taka, że pierwsze dwie należą do JUnit4 a dwie ostatnie do JUnit5. Są one swoimi odpowiednikami.

3.
Podaj różnice:
PUT i POST_
PUT jest idempotentny a POST nie.
PUT** służy do aktualizowania istniejących danych a POST do tworzenia nowych

Co znaczy, że PUT jest idempotentny? Że wynik zawsze jest taki sam jeżeli operacja została wykonana raz lub kilka razy


Źródła dodatkowe:
https://en.wikipedia.org/wiki/Singleton_pattern
https://howtoprogram.xyz/2016/08/10/junit-5-vs-junit-4/

TAGI:
#pytanianadeva #programowanie #naukaprogramowania #java #wzorceprojektowe #testowanieoprogramowania
  • 116
@pottymouth: 1. Standardowym przykładem stosowania singletonu jest LOGGER - po prostu wydaje się to być jedynym sensownym wyjściem bez produkcji jakiegoś overkilla - szerzej patrząc - generowanie utila zależnego od danej klasy (np wypisywanie że jesteśmy w danym miejscu klasy) ale jednocześnie oderwanego od logiki danej klasy i z możliwość konfiguracji poza tą klasa - nie powinno się stosować singletonu do przechowywania info o aplikacji tontzw GOD OBJECT
@pottymouth: wydaje mi się, że ta Twoja seria dużo by zyskała, gdybyś trochę bardziej zgłębiał temat, bo nie wydaje mi się, żeby na rozmowie kwalifikacyjnej takie szkolne regułki jak o tym singletonie wystarczyły. Piszesz, że singleton jest antywzorcem, na rozmowie na 90% padnie pytanie rozwijające "dlaczego tak uważasz?". Powinieneś to rozwinąć.
Przykłady dodatkowych tematów na temat samego singletona:
- skoro domyślnie w np. w springu beany są singletonami, to czy to