Layer Supertype es un objeto que actúa como el padre de todos los objetos en una capa determinada. Su propósito es actuar como un lugar central donde se coloca la lógica y los atributos comunes que comparten todos los objetos de esa capa.
Por ejemplo, si tienes una capa de dominio donde todos tus objetos de negocio necesitan tener un identificador único (ID), puedes crear un Layer Supertype del cual hereden todos esos objetos.
# ¿Cuándo usarlo?
Es ideal cuando identificas comportamientos o atributos repetitivos entre múltiples clases dentro de una misma capa arquitectónica. Ayuda a mantener el principio DRY (Don't Repeat Yourself).
# Ventajas
-
verified
Reducción de duplicidad
Centraliza la lógica común, evitando repetir código en múltiples clases.
-
verified
Consistencia
Asegura que todos los objetos de una capa sigan los mismos estándares y comportamientos base.
-
verified
Mantenibilidad
Cualquier cambio en la lógica compartida se realiza en un solo lugar.
# Desventajas
-
warning
Acoplamiento
Crea una dependencia fuerte de todas las subclases hacia la clase supertipo.
-
warning
Herencia rígida
En lenguajes que solo permiten herencia simple, consume la única oportunidad de heredar de otra clase.
# Ejemplo Detallado en Java
Un ejemplo de un Layer Supertype para objetos de dominio:
EntidadBase.java
public abstract class EntidadBase {
private Long id;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
// Otros métodos comunes como auditoría, validación base, etc.
}
public class Usuario extends EntidadBase {
private String nombre;
// Usuario hereda automáticamente el ID de EntidadBase
}
# Conclusiones
Layer Supertype es una herramienta poderosa para simplificar el código de una capa arquitectónica y garantizar la consistencia. Al centralizar los aspectos fundamentales, permitimos que las clases hijas se centren únicamente en su lógica específica.