gost 390446
Iskusan
- Poruka
- 5.726
U poslednjih nekoliko nedelja, dobijao sam zadatke da refaktorisem neke kodove pisane pre 2-3 godine. U pitanju su bile klijent-server aplikacije, gde su klijenti bili single-page WPF aplikacije. I toliko djubreta od koda sam pretresao da sam poceo da sanjam nocu svakakve gluposti
Takodje, vidim da i ovde dosta ljudi uopste nije shvatilo dva osnovna principa OOP-a, i uporno pokusava da tera po svom, a onda kukaju kada nesto ne moze lepo da se implementira.
Ta dva motiva, a i trenutan visak vremena na poslu (nisam lud da im kazem da sam zavrsio sve za ovaj sprint dva dana ranije ) me motivisu da otvorim temu, gde bih objasnio kako implementirati jednu jednostavnu desktop aplikaciju, koriscenjem WPF-a, ali tako da ispostujemo MVVM pattern, i da iskoristimo moc Depencency Injection-a.
Pre nego krenemo, da ponovim dva osnovna principa OOP-a (poznati kao osnovni principi solid programming-a): JAKA KOHEZIJA, i SLABA POVEZANOST (High Cohesion & Low Coupling).
Jaka kohezija podrazumeva da je jedan objekat odgovoran za jedan posao. Kao i u stvarnom svetu, recimo, automobil ima vise delova, i svaki deo je odgovoran za jedan posao koji radi.
Slaba povezanost, izmedju delova, podrazumeva da delovi treba da sto je manje moguce zavise jedni od drugih - kako bi lakse mogli da se zamene, unaprede, odrzavaju, popravljaju, da se lako detektuje u kom delu je problem.
Da bi se ispostovala ova prica u programiranju, osmisljen je MVVM dizajn pattern. Naravno, postoji jos mnogo drugih pattern-a, i svi su tu sa ciljem da ispostuju solid-programming-principles, ali ovde cemo da se zadrzimo, i prikazemo kako radi MVVM.
Prvo slovo M u skracenici je od MODEL - predstavlja model podataka, tacnije predstavlja nase podatke.
Drugo slovo V, je od VIEW - predstavlja user interface - prikaz nasih podataka.
poslednja dva slova su od VIEW-MODEL: medjusloja, koji predstavlja "lepak" izmedju modela i view-a, i sluzi da poveze nase podatke sa interfejsom, ali i mnogo vise: sluzi kao neka vrsta "skretnicara", "dispecera", tacnije onoga koji povezuje ne samo prikaz podataka i ono sto nase podatke sadrzi, vec uz pomoc jednog drugog, dodatnog, jako bitnog mehanizma u celoj ovoj prici, povezuje i prosledjuje ko ce i kako izvrsavati akcije nad tim podacima (komande). Taj dodatni mehanizam se zove Depencency Injection, i o njemu cemo malo kasnije, kroz konkretan primer.
Dakle, da rezimiramo:
MODEL - sadrzi podatke.
VIEW - prikazuje podatke korisniku - UI
VIEW-MODEL - povezuje ova dva, i ponasa se kao vrhovni komandant, koji odredjuje ko ce koje komande da izvrsi.
Mozemo li sada dalje, da polako krenemo sa konkretnim primerom, i da vidimo kako ovo radi? Jel ovo interesuje nekoga, uopste?
Takodje, vidim da i ovde dosta ljudi uopste nije shvatilo dva osnovna principa OOP-a, i uporno pokusava da tera po svom, a onda kukaju kada nesto ne moze lepo da se implementira.
Ta dva motiva, a i trenutan visak vremena na poslu (nisam lud da im kazem da sam zavrsio sve za ovaj sprint dva dana ranije ) me motivisu da otvorim temu, gde bih objasnio kako implementirati jednu jednostavnu desktop aplikaciju, koriscenjem WPF-a, ali tako da ispostujemo MVVM pattern, i da iskoristimo moc Depencency Injection-a.
Pre nego krenemo, da ponovim dva osnovna principa OOP-a (poznati kao osnovni principi solid programming-a): JAKA KOHEZIJA, i SLABA POVEZANOST (High Cohesion & Low Coupling).
Jaka kohezija podrazumeva da je jedan objekat odgovoran za jedan posao. Kao i u stvarnom svetu, recimo, automobil ima vise delova, i svaki deo je odgovoran za jedan posao koji radi.
Slaba povezanost, izmedju delova, podrazumeva da delovi treba da sto je manje moguce zavise jedni od drugih - kako bi lakse mogli da se zamene, unaprede, odrzavaju, popravljaju, da se lako detektuje u kom delu je problem.
Da bi se ispostovala ova prica u programiranju, osmisljen je MVVM dizajn pattern. Naravno, postoji jos mnogo drugih pattern-a, i svi su tu sa ciljem da ispostuju solid-programming-principles, ali ovde cemo da se zadrzimo, i prikazemo kako radi MVVM.
Prvo slovo M u skracenici je od MODEL - predstavlja model podataka, tacnije predstavlja nase podatke.
Drugo slovo V, je od VIEW - predstavlja user interface - prikaz nasih podataka.
poslednja dva slova su od VIEW-MODEL: medjusloja, koji predstavlja "lepak" izmedju modela i view-a, i sluzi da poveze nase podatke sa interfejsom, ali i mnogo vise: sluzi kao neka vrsta "skretnicara", "dispecera", tacnije onoga koji povezuje ne samo prikaz podataka i ono sto nase podatke sadrzi, vec uz pomoc jednog drugog, dodatnog, jako bitnog mehanizma u celoj ovoj prici, povezuje i prosledjuje ko ce i kako izvrsavati akcije nad tim podacima (komande). Taj dodatni mehanizam se zove Depencency Injection, i o njemu cemo malo kasnije, kroz konkretan primer.
Dakle, da rezimiramo:
MODEL - sadrzi podatke.
VIEW - prikazuje podatke korisniku - UI
VIEW-MODEL - povezuje ova dva, i ponasa se kao vrhovni komandant, koji odredjuje ko ce koje komande da izvrsi.
Mozemo li sada dalje, da polako krenemo sa konkretnim primerom, i da vidimo kako ovo radi? Jel ovo interesuje nekoga, uopste?
Poslednja izmena: