model Numirea Observer
- model de observator definește relația „unu-la-mai multe relații“ între obiecte, astfel încât atunci când schimbarea stării unui obiect, toate obiectele dependente sunt notificate si actualizate automat.
- model Observer încapsulează componente principale (independente) în subiect abstracție și componenta variabilă (dependentă) în Observer ierarhie.
- model Observator definește o parte din "View" în modelul Model-View-Controller (MVC).
model Observer găsește aplicație largă în sistemele de interfață de utilizator în cazul în care datele și prezentare ( „specii“) sunt separate una de alta. Atunci când modificările datelor ar trebui să fie schimbate toate aceste date (de exemplu, sub formă de tabele, grafice și diagrame).
pentru a rezolva problemele
Există un sistem format dintr-o multitudine de clase care au cooperat. Astfel de obiecte care interacționează trebuie să fie într-o stare consistentă. Vrei să evite un sistem monolitic de a face clase slab cuplate (sau reutilizabile).
Discutarea modelului Observer
model Observer definește un obiect de subiect care deține datele (model) și toată funcționalitatea „reprezentări“ delegati vag cuplate obiecte individuale Observer. La crearea de observatori de observator autentificat obiect de subiect. Subiect Atunci când modificările obiect, notifică toți observatorii înregistrați. După aceea, fiecare browser solicită un obiect de subiect partea statului, care este necesară pentru a afișa datele.
Acest sistem vă permite să ajusteze dinamic numărul și „tipurile“ de reprezentări ale obiectelor.
Protocolul de comunicare descris mai sus urmează modelul trage (pull), în cazul în care subiectul va informa observatorii despre schimbarea lor, iar fiecare supraveghetor este responsabil pentru „tragerea“ Subiect la dreptul dat la el. Există, de asemenea, un model de împingere în cazul în care entitatea de subiect trimite (metoda „push“) observatorilor informatii detaliate cu privire la schimbarea lor.
Există, de asemenea, o serie de probleme care ar trebui să fie menționate, dar discuția care va rămâne în afara domeniului de aplicare a prezentului articol:
- Punerea în aplicare a „comprimarea“ a anunțurilor (doar trimiterea observă o serie de modificări consecutive Subiect subiect).
- Monitorizarea mai multor entități care utilizează un observator observator.
- Excepție face referire bălăbăneală observatori la subiecții aflați la distanță. Pentru a face acest lucru, subiectul trebuie să notifice observatorii cu privire la eliminarea lor.
model de observator a fost folosit pentru prima dată în arhitectura limbajului Model-View-Controller Smalltalk, care reprezintă cadrul pentru construirea interfețelor utilizator.
Structura modelului Observer
Subiectul este principalul (independent) abstractizare. Observer este variabilă (dependentă) abstractizare. Subiectul informează observatorii despre schimbarea lor, la care fiecare observator poate interoga starea subiectului.
UML-clasa diagrama patternuri Observer
model EXEMPLU Observer
model de observator definește relația „unu-la-mai multe relații“ între obiecte, astfel încât atunci când schimbarea stării unui obiect, toate obiectele dependente sunt notificate si actualizate automat. Unele licitații demonstrează acest model. Fiecare participant are un card cu numere, pe care îl folosește pentru a se referi la prețul de ofertă (BID). Leading de licitație (Subiect) începe de tranzacționare și ceasuri de mână atunci când cineva preia cardul care oferă noul preț mai mare. Leading primește o cerere, care este apoi notifică tuturor ofertanților (observatori).
Utilizarea Observer Pattern
- Se efectuează o distincție între principalele (sau independente) și complementare (sau dependente) funcționalități.
- Modelați funcționalitatea „independent“ de abstractizare „subiect“.
- Simulați o funcționalitate „dependentă“, prin utilizarea unei ierarhii „observator“.
- Subiect clasa C asociată numai Observer clasa de baza.
- Clientul stabilește numărul și tipurile de observatori.
- Observatorii înregistrate în subiect.
- Subiectul notifică tuturor observatorilor înregistrați.
- Subiectul poate „împinge“ informații către observatorul sau observatorii pot „trage“ informațiile de care au nevoie de obiectul de subiect.
Caracteristici model Observer
- Patterns Lanțul de responsabilitate. Comandă. Mediator și Observer arată cum este posibil să se împartă expeditori și destinatari ai cererilor în considerare caracteristicile sale. Lanțul de expeditor Responsabilitatea transmite cererea de-a lungul lanțului de potențiali beneficiari. Comanda definește relația - „destinatar opravitel“ printr-o subclasă. Expeditorul mediator și destinatar se referă la reciproc, în mod indirect, prin mediere. Modelul Observer de comunicare între expeditor și receptor devine slab, numărul de destinatari pot fi configurate în timpul rulării.
- Mediatorul și Observată sunt modele concurente. Dacă Observer distribuie interacțiunea c prin obiect „observator“ și „subiect“, atunci mediatorul utilizează interacțiunea mediere încapsulare între alte obiecte. Am găsit mai ușor să facă Observatorii refolosibile și subiecte decât Intermediari.
- Mediatorul poate fi folosit pentru a înregistra în mod dinamic colegii de observator și interacțiunea lor cu mediatorul.
model de punere în aplicare Observator
Punerea în aplicare a modelului de observare în pași
- Modelați funcționalitatea „independent“ de abstractizare „subiect“.
- Simulați o funcționalitate „dependentă“, prin utilizarea unei ierarhii „observator“.
- Subiect clasa C asociată numai Observer clasa de baza.
- Observatorii înregistrate în subiect.
- Subiectul notifică tuturor observatorilor înregistrați.
- Observatorii „trage“ informațiile de care au nevoie de obiectul de subiect.
- Clientul stabilește numărul și tipurile de observatori.