Articolul va implementa unul dintre modelele de comportament Observer.
Sarcina principală este de a monitoriza modificarea obiectului și de a informa aceia care depind de acest obiect.
De exemplu, avem date care sunt afișate sub forma unui tabel și a unui grafic. Când schimbăm datele, trebuie să actualizăm tabelul și graficul. În acest caz, trebuie să aplicăm modelul de observator.
Când se implementează șablonul "observator", se folosesc de obicei următoarele interfețe și clase:
Observabil - o interfață care definește metodele de adăugare, eliminare și alertare a observatorilor;
Observer (observator) - interfața cu care observatorul primește o alertă;
ConcreteObservable este o clasă de beton care implementează interfața Observabilă;
ConcreteObserver este o clasă de beton care implementează interfața Observer
În exemplul nostru, clasa în care se schimbă datele este clasa ConcreteObservable, deoarece modificările apar în date și trebuie să notifice despre schimbările sale. Graficul și tabelul sunt Observatorul, care monitorizează modificările datelor.
Observatorii sunt utilizați în modelul MVC. Există un model care funcționează cu date și mai multe vizualizări care afișează aceste date. În șablonul MVC, modelul nu cunoaște nimic despre vizualizări, ci doar operează pe date și totul, în model, nu ne putem referi direct la vizualizări. Vizualizați pe baza modelului pe care l-au transferat. Modelul va moșteni interfața Observabilă și va notifica vizualizarea despre modificările sale. Vederea va fi notificată despre modificarea modelului și actualizată, adică interfața Observer va fi moștenită.
Iată o implementare a modelului Observer pe un exemplu simplu de vreme.