Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Patrón de diseño observer

definiciones practica en java
by

Miguel Cupul

on 2 July 2013

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Patrón de diseño observer

Introduccion:
Patrones de diseño: Observer
Definición
Permite a los objetos captar dinámicamente las dependencias entre objetos, de tal forma que un objeto notificará a los objetos dependientes de él cuando cambia su estado, siendo actualizados automáticamente.
Estructura
Bibliografía.
1. Francisco Martinez. 2000. Guía de construcción de software en Java con patrones de diseño. Universidad de Oviedo. España.
2. José Vélez. 2010. Técnicas avanzadas de diseño de software: Una introducción a la programación orientada a objetos usando UML y Java. Universidad Rey Juan Carlos. España.
3. Liliana Martínez. 2008. Componentes MDA para patrones de diseño. Universidad Nacional de la Plata. Argentina.
4. Bernd Bruegge. 2010. Object Oriented Software Engineering using UML, patterns and Java Third Edition. Prentice Hall. USA.
5. Erich Gamma. 1997. Design Patterns Elements of reusable Object Oriented Software. Pearson Education. USA.
6. Bruce Eckel. 2006. Thinking in patterns with Java.
7. Alan Ezust. 2012. An Introduction to design patterns in C++ with Qt Second edition. Prentice Hall. USA.
8. Benneth Cristiansonn. 2008. GOF Design patterns with examples using Java and UML 2.
9. Steve Holzner. 2006. Design Patterns for Dummies. Wiley Publishing Inc. Canada.
10. Judith Bishop. 2008. C# 3.0 Design Patterns. O’Reilly Media Inc. USA.

A continuación se trata el tema de patrón de diseño observer,
se habla un poco acerca de éste, su aplicabilidad,
su implementación, su estructura, un ejemplo implementado en java y su ejecución en consola para ver cómo funciona en la práctica.

Aplicabilidad
Cuando una abstracción tiene dos aspectos, uno dependiente de otro. Una instancia de una clase necesitará notificar a otros objetos cuando cambia su estado. La instancia de la otra clase necesitará ser notificada cuando un objeto sobre el que tiene dependencia cambia su estado. Encapsular estos aspectos en objetos diferentes permite variarlos y reutilizarlos independientemente.
Cuando tienes una relación de dependencia de uno a muchos que puede requerir que un objeto notifique a múltiples objetos que dependen de él cuando cambia su estado.

Ejemplo en Java
UML del ejemplo a hacer
Explicación
Se crea la clase observador como interfaz, se crea una clase informador que implementa la interfaz con un método que solo imprime una frase, la clase sujeto que tiene un arreglo de observadores y los métodos: agregar observador, retirar observador y notificar. En la clase principal se instancias las clases informador y sujeto, se agrega un observador al sujeto, se ejecuta la acción, se retira el observador y se vuelve a ejecutar la acción; en el segundo caso ya no ejecutaría nada porque ya se ha retirado el observador.
Codigo
package com.utm.bo;
public interface Observador {
public void actuar();
}
package com.utm.bo;
public class Informador implements Observador {
@Override
public void actuar() {
System.out.println("Observando y notificando las acciones... ");
}
}

package com.utm.bo;
import java.util.ArrayList;
public class Sujeto {
private ArrayList<Observador> observadores;
public Sujeto(){
observadores=new ArrayList<Observador>();}
public void RegistrarObs(Observador o){
observadores.add(o);}
public void RetirarObs(Observador o){
observadores.remove(o);}
public void Notificar(){
for(Observador o:observadores){
o.actuar();}}
public void ejecutarAccion(){
Notificar();}}
package com.utm.main;
import com.utm.bo.Informador;
import com.utm.bo.Sujeto;
public class Principal {
Sujeto sujeto;
Informador informador;
public void ejecutar(){
sujeto = new Sujeto();
informador = new Informador();
System.out.print("Agregando observador... ");
sujeto.RegistrarObs(informador);
System.out.println("Observador agregado");
System.out.print("ejecutando accion del observador... ");
sujeto.ejecutarAccion();
System.out.print("Retirando observador... ");
sujeto.RetirarObs(informador);
System.out.println("Observador retirado");
System.out.print("ejecutando accion del observador... ");
sujeto.ejecutarAccion();}
public static void main(String[] args) {
Principal p= new Principal();
p.ejecutar();
}

}
Full transcript