Interface - Tensho97/Aprende-a-Aprender GitHub Wiki

Patrón Interface


Utilidades y ventajas

Utilidad: Definir un comportamiento independiente de donde vaya a ser usado.

Ventajas:

  • Desacople entre comportamiento y clase.
  • Realizacion de clases "Utiles".

Problema

class Utilities{

void imprimirEstructura( ¿¿?? o) {
  o.irAlPrimero();
  while(o.tieneElems());
    imprimir(o.obtenerSiguiente());
  }
} 

Todos los objetos o, tiene que implementar: irAlprimero(), tieneElems(), obtenerSiguiente().

PROBLEMA: De que tipo son los objetos o?

Solución

Definir los parámetros de un tipo Interfaz. Todas las clases(instancias) que quieran usar ese comportamiento deberán implementar dicho interfaz. Esto es:

Partiendo del ejemplo anterior, La clase Utilities.

Clase Utilites{
  ImprimirEstructura (Recorrible o);
}

Definimos un interface de Recorrible:

Interfaz Recorrible{
  irAlPrimero();
  tieneElems();
  obtenerSiguiente();
}

A partir de esto cualquiera clase puede implementar esa interface para usar ese comportamiento.

Implementación con ejemplo

class MiClase<T> implements Recorrible<T>{

    Vertor<T> v = new Vector<T>();
    int pos;

    void irAlPrimero(){
        pos=0;
    }

    boolean tieneElems() {
        v.lenght<pos;
    }

    T obtenerSiguiene(){
        T o = v.elementAt(pos);
        pos++;
        return o;
    }
}


Autor : Miguel