This is book named: "Head First Design Patterns: A Brain-Friendly Guide", with design patterns that i wrote in Swift instead C# and Java that is used in this book.
Strategy pattern predstavlja familiju alogitama, enkapsulira svaki pojedinacno ali ih i cini medjosbno inter-operabilnim. Strategy omogucava da su algoritmi nezavisni i da se razlikuju od zavisnosti od klijenata koji ih koriste.
Observer pattern definise 1 na N zavisnosti izmedju objekata tako da kad jedan objekat promeni svoje stanje, svi zavisni objekti budu obavesteni o tome i azurairani automatski.
Dekorator pattern dinamicki dodaje dodatne funkcionalnosti objektu i pruza fleksibilnu alternativu nasledjivanju upravo radi prosirivanja funkcionalnosti.
Factory Method Pattern definise interfejs za kreiranje objekta, ali prepusta subklasama da odaberu koji objekat ce instancirati. On omogucavama nadklasama da instanciranje prepuste podklasama
Simple Factory nije Design Pattern, vec idiom (osobenost) programiranja i cesto se zbog slicnosti mesa sa Factory Patternom.
Abstract Factory obezbedjuje interfejs za kreiranje familije poveanih ili medjuzavisnih objekata bez specificiranja njihovih konkretnih klasa.
Abstract Factory pattern : UML
Command Pattern enkapsulira request kao objekat, tako da dozvoljava da se objektima moze manipulisati pomocu raznih parametara kao sto su razliciti requestovi, redosledi (redovi) ili log requestovi, a podrzava i prekidanje operacija drugom ili istom operacijom.
Adapter patern pretvara interfejs klase u pogodan interfejs koji neka druga klasa ocekuje, on omogucuje da klase budu kompatibilne iako to zaista nisu. Adapter patern je ukrqtko receno wrapper.
Proxy Pattern obezbedjuje surogat ili neki drzac za odredjeni objekat, da bi se tom objektu moglo pristupiti. Postoje razni proxy patterni, npr virtualni, kesirani, remote, sigurnosni, sinhronizujuci, itd. Remote proxy sluzi kad hocu da pristupim nekom izvoru koji je na nekom drugom mestu (drugi modul, podatak na nekom serveru,โฆ). Virtulani proxy kontrolise pristup objektu koji je skup za kreiranje (ovo moze biti kesiranje, primer sa Book Parserom). Protection proxy je menadzer pristupa, npr samo korisnici koji imaju odgovorajucu dozvolu mogu da pristupe pravom objektu.
Bridge Pattern ima namenu da rasclani funkcionalnost na apstrakciju i implementaciju, tako da se dobiju dva nezavisna dela koda koji se isto tako nezavisno mogu menjati.
Template Method Pattern definise kostur algoritma operacija, ostavljajuci neke korake algoritma subklasama na razradu uz mogucnost da izmene te korake ali tako da ne menjaju kostur algoritma.
Composite pattern omogucava da se seriji obejkata naprave izmene kao sto su izmene koje bi mogle da se primene na pojedinacni objekat. Time se postize mogucnost da se ne vodi racuna da li si u kompozitnom delu ili zavrsnom delu (leaf-u). Composite pattern je drvo strukture, tako da delovi strukture predstavljaju istovremeno i celine i delove ukupne hijerarhije drveta, a omogucava se interakcija sa pojedinacnim objektima na isti nacin kao i sa familijom objekata.
S O L ( I ) D Klijenti ne treba da budu obavezni da se podvrgajvaju interfejsu koji ima metode koje konkretni klijent ne koristi.