Diseño y análisis de ingeniería
Aplicación de la Ley de Demeter para reducir la dependencia de objetos en el diseño orientado a objetos
Table of Contents
La Ley del Demeter es una directriz de diseño para desarrollar software, especialmente en programación orientada hacia objetos. Se propone reducir las dependencias entre objetos, haciendo que los sistemas sean más modulares, más fáciles de mantener y menos proclives a los errores.
Comprender la ley del desmetro
La Ley del Demeter, a menudo resumida como "sólo hablar con tus amigos inmediatos", alienta a los objetos a comunicarse sólo con sus colaboradores directos. Esto significa que un objeto sólo debe invocar métodos de:
- Es uno mismo.
- Los objetos pasaron como parámetros
- Objetos que crea
- Su componente directo
Al adherirse a esta regla, se minimizan las dependencias del objeto, reduciendo el riesgo de acoplamiento estricto y facilitando el cambio o la ampliación del código.
Aplicación de la Ley de Demetro
La aplicación de la Ley del Demetro implica el diseño de clases y métodos que no llegan profundamente a los gráficos de objetos. Por ejemplo, en lugar de llamar:
order.getCustomer().getAddress().getCity()]
Es mejor proporcionar un método que devuelve la información necesaria directamente:
order.getCustomerCity()]
Consejos de refactorización
- Encapsular cadenas complejas dentro de la clase misma.
- Cree métodos que expongan sólo los datos necesarios.
- Use patrones de diseño como Facade o Mediator para reducir las dependencias.
- Mantenga las clases enfocadas en una sola responsabilidad.
Beneficios de la Ley del Demetro
La adhesión a esta ley ofrece varias ventajas:
- Reduce el acoplamiento entre las clases.
- Mejora la legibilidad y la mantenibilidad del código.
- Hace que las pruebas de unidad sean más fáciles aislantes objetos.
- Facilita la refactorización y ampliación del código.
En resumen, la aplicación de la Ley de Demeter en diseño orientado a objetos promueve un código más limpio y modular. Alenta a los desarrolladores a pensar cuidadosamente en interacciones y dependencias de objetos, lo que conduce a sistemas de software más robustos.