Observer

Un design pattern frecvent folosit - chiar daca nu stii ca l folosesti

Posted by anghelvalentin on September 01, 2019

Observer se foloseste in momentul in care un obiect (sau subiect), trebuie sa notifice alte obiecte ca starea lui s-a schimbat. Un exemplu foarte utilizat este in momentul in care utilizatorul apasa un buton intr-o aplicatie. In acel moment butonul si-a schimbat starea si notifica acest lucru. Scopul programatorului fiind sa se aboneze la buton cu clase ce contin metoda ce este apelata in momentul apasarii butonului. 

Observer este usor de inteles si utilizat

Observer necesita 2 clase  si 2 interfete.  Avem nevoie de o interfata cu semnatura metodei ce va fi apelata. Obiectele ce vor vrea sa primeasca mesejul de la obiectul ce si-a schimbat starea, vor trebui sa implementeze interfata cu semnatura metodei. O a doua interfata ISubject, va contine semnaturile a 3 metode: adauga, sterge si notifica. Clasa ce va implementa aceasta interfata va contine o lista de obiecte ce implementeaza interfata de primire a notificarii. Aceasta lista va fi actualizata prin cele doua metode: cea de sterge si cea de adaugare.

Diagrama claselor arata astfel:

In C# ai posibilitatea de a folosi evenimente, practic nu vei mai avea nevoie de acest design pattern, dar si evenimente functioneaza pe acelasi principiu de abonare la eveniment.

Codul sursa Observer