IMPORTANT: Per accedir als fitxer de subversion: http://acacha.org/svn (sense password). Poc a poc s'aniran migrant els enllaços. Encara però funciona el subversion de la farga però no se sap fins quan... (usuari: prova i la paraula de pas 123456)

Introducció

El patró observador és un patró de disseny que defineix una dependència "un a molts" entre objectes de forma que quan un dels objectes canvia el seu estat notifica aquests canvis a tots els objectes depenent. Aquest patró també es conegut com a publicació-inscripció o model-patró.

Existeixen dos tipus de participants en un patró Observador:

  • Subjecte: El subjecte té una referència de tots els observadors que estan subscrits al seus esdeveniments (o els esdeveniments són de broadcast i s'envien a tot el sistema)
  • Observador: es subscriu als esdeveniments que pot disparat el subjecte i s'obliga a implementar certs mètodes per a respondre als esdeveniments als que esta subscrit.

El patró de disseny Observer permet que un part del codi (subjecte) anunci que ha passat algun esdeveniment interessant i que els observador rebin la notificació corresponents.

Observer és un patró que solem trobar a tots els frameworks amb interfícies gràfiques orientades a objectes on la forma de capturar els esdeveniments és definir listeners als objectes per tal que puguin rebré notificacions d'esdeveniments i actuar en conseqüència

PubSub vs Observer

  • Observer is an object-event oriented pattern. The Observer Pattern must be implemented within the same address space, The Observer and Subject are coupled.
  • Publisher-subscriber: is a network oriented architectural pattern. El subscriptor i el publicador no tenen per què esta acoplats i poden estar en diferents aplicacions.

Tipus de patro

TODO: Se trata de un patrón de comportamiento (existen de 3 tipos: Creación, Estructurales y de Comportamiento), es decir, está relacionado con algoritmos de funcionamiento y asignación de responsabilidades a clases y objetos. Los patrones de comportamiento describen no solamente estructuras de relación entre objetos o clases sino también esquemas de comunicación entre ellos y se pueden clasificar en función de que trabajen con clases (Método Plantilla) u objetos (Cadena de Responsabilidad, Comando, Iterador, Recuerdo, Observador, Estado, Estrategia, Visitante).

Exemples ús

Interfícies gràfiques

Este patrón suele observarse en los frameworks de interfaces gráficas orientados a objetos, en los que la forma de capturar los eventos es suscribir listeners a los objetos que pueden disparar eventos. El patrón Observer es la clave del patrón de arquitectura Modelo Vista Controlador (MVC).1 De hecho el patrón fue implementado por primera vez en Smalltalk's MVC basado en un framework de interfaz.2 Este patrón está implementado en numerosos librerías y sistemas, incluyendo todos los toolkits de GUI.

MVC

Vegeu MVC que utilitza aquest patró.

Jocs

http://gameprogrammingpatterns.com/observer.html

Laravel Events

Vegeu laravel Events

Vegeu també

Enllaços externs