Módulo 2 - Lectura 3
Módulo 2 - Lectura 3
Módulo 2 - Lectura 3
Introducción
El patrón Observer
El patrón State
El patrón Strategy
Referencias
Lección 1 de 5
Introducción
C O NT I NU A R
Lección 2 de 5
El patrón Observer
Ejemplo en Java
Veamos cómo poner en funcionamiento en Java el ejemplo de la figura 1,
según el libro Patrones de diseño en Java de Laurent Debrauwer (2013):
import java.util.*;
public abstract class Sujeto
{
protected List<Observador> observadores =
new ArrayList<Observador>();
public void agrega(Observador observador)
{
observadores.add(observador);
}
public void suprime(Observador observador)
{
observadores.remove(observador);
}
public void notifica()
{
for (Observador observador: observadores)
observador.actualiza();
}
}
El código fuente de la interfaz Observador es muy simple puesto
que solo contiene la firma del método actualiza.
C O NT I NU A R
Lección 3 de 5
El patrón State
MáquinaEstados [en nuestro ejemplo Pedido] es una clase concreta que describe los objetos
que son máquinas de estados, es decir, que poseen un conjunto de estados que pueden ser
descritos mediante un diagrama de estados y transiciones. Esta clase mantiene una
referencia hacia una instancia de una subclase de Estado que define el estado en curso.
Estado (en nuestro ejemplo EstadoPedido) es una clase abstracta que incluye los métodos
ligados al estado y que gestionan la asociación con la máquina de estados..
Ejemplo en Java
A continuación, presentamos el ejemplo anterior escrito en Java según el
código presentado en el libro Patrones de diseño en Java de Laurent
Debrauwer (2013):
import java.util.*;
public class Pedido
{
protected List<Producto> productos = new
ArrayList<Producto>();
protected EstadoPedido estadoPedido;
public Pedido()
{
estadoPedido = new PedidoEnCurso(this);
{
public PedidoEntregado(Pedido pedido)
{
super(pedido);
}
public void agregaProducto(Producto producto) { }
pedido2.visualiza();
pedido2.estadoSiguiente();
pedido2.visualiza();
pedido2.estadoSiguiente();
pedido2.borra();
pedido2.visualiza();
}
}
Producto: accesorio 2
Producto: vehiculo 11
Producto: accesorio 21
Producto: vehiculo 11
Producto: accesorio 21
Producto: vehiculo 11
Producto: accesorio 21
C O NT I NU A R
Lección 4 de 5
El patrón Strategy
Una segunda versión que muestra tres vehículos por línea pero
que muestra menos información y una única fotografía.
import java.util.*;
public class DibujaUnVehiculoPorLinea implements DibujaCatalogo
{
public void dibuja(List<VistaVehiculo> contenido)
{
System.out.println(
"Dibuja los vehiculos mostrando un vehiculo por linea");
for (VistaVehiculo vistaVehiculo: contenido)
{
vistaVehiculo.dibuja();
System.out.println();
}
System.out.println();
}
}
import java.util.*;
public class DibujaTresVehiculosPorLinea implements DibujaCatalogo
{
public void dibuja(List<VistaVehiculo> contenido)
{
int contador;
System.out.println(
"Dibuja los vehiculos mostrando tres vehiculos por linea");
contador = 0;
for (VistaVehiculo vistaVehiculo: contenido)
{
vistaVehiculo.dibuja();
contador++;
if (contador == 3)
{
System.out.println();
contador = 0;
}
else
System.out.println(" ");
}
if (contador != 0)
System.out.println();
System.out.println();
}
}
vehiculo economico
vehiculo amplio
vehiculo rapido
vehiculo confortable
Referencias
C O NT I NU A R