I. PATRÓN DE DISEÑO: OBSERVER

A continuación se encuentra la plantilla del patrón objeto de estudio:

1. Nombre del patrón: Observer.

2. Clasificación del patrón: De comportamiento.

3. Intención: Define una o muchas dependencias entre objetos de tal forma que cuando un objeto cambia de estado todos sus dependientes son notificados automáticamente y actualizados.
Los observadores son dependientes de un sujeto.Y cuando reciben notificación de que el estado el sujeto cambia, se pueden actualizar con nuevos valores.

4. Estructura:




5. Participantes

Subject: Conoce sus observadores y proporciona una interfaz para gestionarlos.

ConcreteSubject: Almacena el estado de interés y envía una notificación a sus observadores cuando su estado cambia.

Observer: Define una interfaz para los objetos a los que debe notificarse el cambio de estado en ConcreteSubject.

ConcreteObserver: Mantiene una referencia a un objeto ConcreteSubject, mantiene información consistenete relacionada con el estado implementando el método Update().

6. Consideraciones:

•El sujeto contiene un estado y lo controla. Los observadores confían en el sujeto para que éstos le digan, cuando cambia su estado.
•Dado que el sujeto es el propietario exclusivo de los datos (estado), los observadores son dependientes de que el sujeto los actualice cuando los datos cambian.
•Los sujetos y los observadores están bajamente acoplados (ellos pueden interactuar pero tienen muy poca información el uno del otro):
Lo único que el sujeto sabe es que el observador implementa una interfaz (update ()).
•Se pueden adicionar observadores en cualquier momento ya que la única cosa de la cual depende el sujeto es de una lista de objetos que implementan la interfaz Observer.
•No se necesita modificar el sujeto para adicionar nuevos tipos de observadores. (Solo se necesita implementar la interfaz observer y el sujeto notificará a cualquier objeto que implemente esa interfaz.
•Esforzar por diseños con bajo acoplamiento entre objetos que interactúan.
•Ya que permiten construir sistemas orientados a objetos más flexibles que puedan manejar cambios porque ellos minimizan la interdependencia entre objetos.

No hay comentarios:

Publicar un comentario