Dizajn obrazac (eng. Design Pattern) opisuje dobro poznato i isprobano rešenje za problem sa kojim se programeri često susreću prilikom razvoja softvera. Dizajn obrasci su konceptualni i mogu se primeniti u bilo kojem programskom jeziku.
Dizajn obrasci se mogu svrstati u jednu od sledeće tri kategorije, u zavisnosti od problema koji rešavaju:
- Kreacioni obrasci – bave se kreiranjem softverskih objekata.
- Strukturalni obrasci – dizajniranje funkcionalne i fleksibilne klase.
- Obrasci ponašanja – opisuju načine na koje objekti komuniciraju međusobno.
Singleton
Singleton je najpoznatiji i najjednostavniji dizajn obrazac u inženjerstvu softvera. Pored toga, Singleton je kreacioni obrazac dizajna koji ograničava instanciranje klase na jednu instancu. U praksi ga koristimo kada nam je potreban tačno jedan objekat koji će koordinirati akcije u celom sistemu. Na primer, ukoliko želimo da implementiramo logovanje podataka potrebno je da kreiramo Log klasu koja će beležiti sve događaje u log fajlu. Log klasa mora biti Sigleton, zato što u jednom trenutku samo jedna instanca Log klase može da pristupi log fajlu.
Singleton klasa je klasa koja ima: privatni konstruktor, statičko polje koje sadrži instancu i statičku metodu za dobijanje instance.
Više o samom obrascu i implementaciji možete pročitati na sledećem sajtu: https://medium.com/@halilugur/singleton-pattern-with-spring-boot-175287ed504c
Adapter
Adapter je strukturalni obrasac koji omogućava upotrebu klase koja implementira potrebne funkcije, ali ima neadekvatan interfejs. Odnosno, služi da prilagodi (adaptira) postojeće funkcionalnosti (interfejs) onome što korisnik očekuje. Ovaj obrasac omogućava saradnju klasa koje nisu kompatibilne, tako što pravi omotač oko već postojeće klase.
Više o samom obrascu i implementaciji možete pročitati na sledećem sajtu: https://medium.com/@contactkumaramit9139/adapter-design-pattern-in-java-22b1588b85dd
Observer
Observer obrasac, poznat još i kao Publish-Subscribe, je jedan primer obrasca ponašanja. Definiše međuzavisnost objekata tako da kada se stanje jednog objekta promeni svi zavisni objekti se automatski obaveštavaju. Ovaj obrasac podrazumeva broadcast stil komunikacije, u kom Observable javlja da se promena dogodila, a svi posmatrači (eng. Observers) registruju tu promenu i izvršavaju određenu akciju.
Više o samom obrascu i implementaciji možete pročitati na sledećem sajtu: https://www.baeldung.com/java-observer-pattern