MarkerInterface - Tensho97/Aprende-a-Aprender GitHub Wiki

Patrón Marker Interface


Utilidades y ventajas

Utilidad: Sirve para indicar atributos semánticos de una clase.

Ventajas:

  • Se puede preguntar si un objeto pertenece a una clase de un determinado tipo o no.

  • Habitualmente se utiliza en clases de utilidades que tienen que terminar algo sobre objetos sin asumir que son instancias de una determinada clase o no.

Funcionamiento

Tenemos una clase Utilidad:

Clase Utilidad{
    operacion(Object o);
}

Dentro del código del método operacion(Object o) de la clase Utilidad podemos preguntar si el objeto 'o' es de una clase marker:

if (o instanceof Marker) {. . .}
else {. . .}

Se crea la interfaz Marker a partir de esa clase.

A partir de ahora cualquiera clase que implemente marker estará marcada, pero no significa que cumpla las condiciones de serialización y clonación, ya que de eso debe encargarse el programador.

Ejemplo

En java hay clases "serializables", "cloneables", etc. Para ello, deben implementar las interfaces Serializable, Cloneable, etc..

Por ejemplo en caso de intentar clonar un objeto, con clone() sin implementar la interfaz Cloneable en la clase del objeto, cuando intente clonar lanzara una excepción indicando que ese objeto no es valido para clonar.

Para el caso de Serializable, para poder serializar un objeto es necesario que implemente la interface Serializable. Cuando se usen los métodos de serialización en caso de que el objeto no sea serializable lanzaran una excepción.



Autor : Miguel