13. Patrón comportamiento Iterator
- Hola a todos.Seguimos con nuestro curso dedicado a los patrones de diseño software.Los patrones de diseño son unas técnicas para resolver problemas comunes en el desarrollo de software y otros ámbitos referentes al diseño de interacción o interfaces.
- En esta ocasión veremos el patrón de diseño Iterator. En diseño de software, el patrón de diseño Iterador, define una interfaz que declara los métodos necesarios para acceder secuencialmente a un grupo de objetos de una colección.El patrón surge del deseo de acceder a los elementos de un contenedor de objetos (por ejemplo, una lista) sin exponer su representación interna
- El modelo de clases que utilizaremos para este ejemplo es el siguiente:
- En el siguiente vídeo tenéis un ejemplo de este patrón de diseño
- Os dejo el código de las diferentes clases vistas en el vídeo:
- Clase IteradorOrdenador.cs
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Iterator
{
public class IteradorOrdenador
{
private ArrayList ordenador;
private int posicion;
public IteradorOrdenador(Ordenador o)
{
this.ordenador = o.datos;
posicion = 0;
}
public Boolean existeSiguiente()
{
if (posicion < ordenador.Count)
return true;
else
return false;
}
public Object siguiente()
{
object valor = ordenador[posicion];
posicion++;
return valor;
}
}
}
- Clase Ordenador.cs
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Iterator
{
public class Ordenador
{
public ArrayList datos;
public Ordenador()
{
datos = new ArrayList();
}
public Ordenador dameValor(int pos)
{
Ordenador o = null;
if(pos<datos.Count)
return (Ordenador)datos[pos];
return o;
}
public void añadirValor(string valor)
{
datos.Add(valor);
}
public int dimension()
{
return datos.Count;
}
public IteradorOrdenador iterador()
{
return new IteradorOrdenador(this);
}
}
}
- Clase Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Iterator
{
class Program
{
static void Main(string[] args)
{
Ordenador lista = new Ordenador();
lista.añadirValor("Pentium 1");
lista.añadirValor("Pentium 2");
lista.añadirValor("Pentium 3");
lista.añadirValor("Pentium 4");
IteradorOrdenador iterador = lista.iterador();
//Recorrido con el iterador
while (iterador.existeSiguiente())
Console.WriteLine(iterador.siguiente());
Console.ReadLine();
}
}
}
No hay comentarios:
Publicar un comentario