terminal

codeando_simple

terminal

menu

terminal

search_module

guest@codeandosimple: ~/system/search $ grep -r "" .

Press [ENTER] to execute search

Status

Engine: Ready

Database: Online

Index: V2.1.0_LATEST

bash — cat layer-supertype.md
guest@codeandosimple: ~/enterprise/patterns $ cat layer-supertype.md

Layer Supertype_

// "La abstracción es el corazón de la ingeniería de software"

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.