Observer Design Pattern

Observer Design Pattern

offline
  • Més que un club
  • Glavni vokal @ Harpun
  • Pridružio: 27 Feb 2009
  • Poruke: 3898
  • Gde živiš: Novi Sad,Klisa

Za maturski moram da napravim aplikaciju koja ce u sebi imati implementiran ovaj sablon... Sinoc sam trazio po netu i vecina stvari mi deluje razumljivo, ali me muci to sto ne znam gde bih trebao da isprogramiram (tj kako), da kada npr dva broja dobiju istu vrednost (neki random generator da se vrti), program na ekranu ispise neku poruku. Preko klasicnog programiranja mi to ne bi bio nikakav problem, ali ovo je meni isuvise apstraktno, pa bih molio nekoga, ko se bolje razume, da mi pojasni. Smile



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Pridružio: 25 Apr 2006
  • Poruke: 322

Jesi li zavrsio marurski? Smile

Ako jos nekom zatreba... Imao bi apstraktnu klasu koja je Subject, recimo RandomGenerator. U njoj bi imao apstraktnu metodu generateRandomNumber koja bi u izvedenim klasama (koje su Concrete subjects) trebalo da odredjenom metodom generisanja slucajnih brojeva nakon odredjenog intervala (implementirano pomocu niti) generise dva slucajna broja koja se porede. U slucaju da su brojevi isti, azurira se stanje subjekta i poziva metod notifyObservers. RandomGenerator cuva listu posmatraca, koji su izvedeni iz apstraktne klase koja je Observer (npr. View) i prilikom poziva metode notifyObservers obavestava svaki od posmatraca o promeni stanja subjekta. I iz te klase View su izvedeni npr. ConsoleView i AWTView, Concrete observers, kod kojih se, prilikom poziva metode notifyObservers Observera poziva metoda notify i ispisuje rezultat na konzoli i komponenti, respektivno.

Imao bi jos i metode registerObserver (tj. registerView u tvom slucaju) koja predstavlja dodavanje prosledjenog Observera u listu Observera datog Subject-a. Imao bi i suprotnu metodu unregisterObserver (tj. unregisterView u tvom slucaju).



Edit: Mogao bi da u tom generateRandomNumber uvedes i jos neki uzorak npr. Template method, gde bi u osnovnoj klasi imaju implementiran "kostur" metode generateRandomNumber (poziv metode za generisanje, provera jednakosti i poziv notifyObservers, a u izvedenim klasama bi implementirao samo generisanje slucajnog broja.



Ko je trenutno na forumu
 

Ukupno su 800 korisnika na forumu :: 7 registrovanih, 1 sakriven i 792 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: 9k38, Dovla, mean_machine, Milometer, nenad81, pera12345, slonic_tonic