Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Pitanje oko Observer pattern-a

[es] :: Art of Programming :: Pitanje oko Observer pattern-a

[ Pregleda: 2530 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Valerij Zajcev

Član broj: 40886
Poruke: 1374
*.dynamic.sbb.rs.



+2 Profil

icon Pitanje oko Observer pattern-a25.05.2010. u 16:05 - pre 174 meseci
Da li Subject uvek mora da ima instance svojih observer-a u sebi?
Vezano za .NET, da li je observer u sustini ista stvar kao delegat u .NET-u i da li je u primeru kako sam ga ja sastvaio dole "Update()" u stvari ta Callback metoda?
Primer kako ja mislim da se radi sa observerom:
Code (csharp):

public partial class frmSubject : Form, ISubject
    {        
        public List<IObserver> ObserversList = new List<IObserver>();

        public frmSubject()
        {
            InitializeComponent();
            RegisterObserver(new frmObserver());
        }

        private void btnNotify_Click(object sender, EventArgs e)
        {
            NotifyObservers();
        }        

        public void RegisterObserver(IObserver observer)
        {
            if (observer is IObserver)
            {
                ObserversList.Add(observer);
            }
        }

        public void RemoveObserver(IObserver observer)
        {
            if (observer is IObserver)
            {
                ObserversList.Remove(observer);
            }
        }

        public void NotifyObservers()
        {
            foreach (IObserver io in ObserversList)
            {
                io.Update("Clicked");
            }
        }      
    }
 


Code (csharp):

public partial class frmObserver : Form, IObserver
    {
        public frmObserver()
        {
            InitializeComponent();
            this.Show();
        }              

        public void Update(string msg)
        {            
            lstEmployee.Items.Add(msg);
            lstManager.Items.Add(msg);
        }
    }
 


[Ovu poruku je menjao Shadowed dana 25.05.2010. u 17:44 GMT+1]
 
Odgovor na temu

mmix
Miljan Mitrović
Chief Software Architect
Financial Intelligence Software Ltd.
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6044



+4631 Profil

icon Re: Pitanje oko Observer pattern-a25.05.2010. u 16:24 - pre 174 meseci
Sustinski, u lokalu da (u principu MulticastEvent je subject, delegat je observer), mada observer patern moze da bude mnogo vise od toga jer ne mora da bude ogranicen na aplikacioni domen. Mozes sa njim komotno da napravis neki distributed event sistem.
Pogledaj ovde za vise detalja: http://msdn.microsoft.com/en-us/library/ee817669.aspx


(i btw, ne treba ti "is" provera u register/remove, strong typed jezik kako c# blokira neispravne parametre pri kompajliranju)
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1255



+96 Profil

icon Re: Pitanje oko Observer pattern-a25.05.2010. u 16:30 - pre 174 meseci
Ako sam ja to dobro skontao delegati su napravljeni po uzoru na observer šablon, ali ti ne moraš da koristiš delegate da bi napravio svoju implementaciju observer šablona. Ja ne koristim šablone u radu u smislu da dok programiram kažem sebi ovde ću da upotrebim ovaj šablon, a onde onaj. Koristim ih u smislu da napravim programersko rešenje, za koje se ispostavlja da je neko prozvao u šablon i dao mu ime. Ne treba se opterećivati mnogo šablonima. Mada, neke moje kolege se lože na njih, i umeju da ih koriste.
 
Odgovor na temu

mmix
Miljan Mitrović
Chief Software Architect
Financial Intelligence Software Ltd.
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6044



+4631 Profil

icon Re: Pitanje oko Observer pattern-a25.05.2010. u 18:49 - pre 174 meseci
Vidim da ti u stvari i nisam odgovorio na prvo pitanje, odgovor je da, subject mora da ima instance obzervera da implementirao pattern.

Sad mi je pala na pamet jos jedna razlika izmedju .net eventa i observer paterna. .NET event/delegate sistem je uvezan direktno 1-1, tj event implementira subject za samo jednu poruku. U custom implementaciji nisi ogranicen na samo jednu poruku, tj IObserver moze da implementira vise metoda (npr Update, Reset, itd) i subject moze da ima vise notify kanala. Iako nije bas "koser" po specifikaciji, moguce je (sa eventom nije). U COMu je source/sink je bio direktna fabricka implementacija observer paterna (source je subject, sink je observer) koja je "fabricki" podrzana kroz IConnectionPoint i IConnectionPointContainer interfejse (koje source tj subject mora da implementira).
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić
 
Odgovor na temu

Valerij Zajcev

Član broj: 40886
Poruke: 1374
*.dynamic.sbb.rs.



+2 Profil

icon Re: Pitanje oko Observer pattern-a25.05.2010. u 20:29 - pre 174 meseci
Hvala, msdn clanak je odlican. A ovo sto se tice callback metode to je u stvari metoda u observer-u odnosno u .NET-u metoda koja hendla event jel da?
 
Odgovor na temu

mmix
Miljan Mitrović
Chief Software Architect
Financial Intelligence Software Ltd.
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6044



+4631 Profil

icon Re: Pitanje oko Observer pattern-a25.05.2010. u 20:33 - pre 174 meseci
da
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić
 
Odgovor na temu

wex-alpha
Sarajevo

Član broj: 7580
Poruke: 845
85.158.36.*



+13 Profil

icon Re: Pitanje oko Observer pattern-a06.06.2010. u 23:09 - pre 174 meseci
Odlican clanal mmix. Hvala.
 
Odgovor na temu

[es] :: Art of Programming :: Pitanje oko Observer pattern-a

[ Pregleda: 2530 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.