Alta cohesión y bajo acoplamiento: una combinación perfecta en el diseño de software, ¡como un socio tácito!

Introducción: En el mundo del desarrollo de software, existe un par tácito e invencible, que es alta cohesión y bajo acoplamiento. Al igual que el cerdo agridulce, no solo pueden mejorar el sabor del software, sino también hacer que el código sea más saludable. Hoy utilizaré algunos ejemplos divertidos para explicar en detalle el concepto de alta cohesión y bajo acoplamiento y sus ventajas, creo que a través de esta forma relajada y amena tendrás una comprensión más profunda de ellos.

Alta cohesión significa que las funciones dentro del módulo están estrechamente relacionadas entre sí, y los diversos elementos dentro del módulo están altamente relacionados entre sí y completan una tarea independiente. El bajo acoplamiento (bajo acoplamiento) se refiere a la dependencia débil entre módulos, los módulos son relativamente independientes y los cambios en un módulo no afectarán significativamente a otros módulos.

En resumen, una alta cohesión significa que los elementos dentro de un módulo o clase están estrechamente relacionados y trabajan juntos para completar una tarea; un bajo acoplamiento significa que las dependencias entre módulos o clases son débiles e independientes entre sí.

Alta cohesión: comprensión tácita de los socios

Imagina que eres chef en un restaurante de comida rápida. Cada día tienes que enfrentarte a una variedad de ingredientes, incluyendo carne de res, pollo, verduras, patatas... Estos ingredientes son como módulos, y tú eres el elemento dentro de este módulo. Una alta cohesión requiere que estén estrechamente relacionados y coordinados entre sí.

Supongamos que hoy estás a cargo de cocinar y te enteras de que el cliente pidió pollo Kung Pao, por lo que inmediatamente inicias la operación. Coges el cuchillo y rápidamente cortas el pollo, luego picas los chiles y los fríes con una cantidad adecuada de salsa de soja, sal y glutamato monosódico. En este momento, un observador atento descubrirá que tus movimientos son suaves y metódicos, como bailar, sin desperdiciar ningún paso extra.

¡Este es el poder de la alta cohesión! Cada elemento (ingrediente) está estrechamente relacionado y coopera entre sí para completar una tarea completa: preparar un delicioso pollo Kung Pao. Cada módulo solo se centra en sus propias responsabilidades y no interferirá con otros módulos. De esta manera, no sólo cocinará un plato delicioso, sino que también mejorará enormemente su eficiencia en el trabajo.

Bajo acoplamiento: comprensión tácita de la distancia

Ahora pensemos en el concepto de bajo acoplamiento. Supongamos que usted es vendedor de entradas en una sala de cine y tiene una larga fila de personas ansiosas por ver la película. Sostienes la máquina expendedora de billetes en la mano, emites los billetes uno por uno y los entregas a los clientes.

De repente, un cliente imprudente llega a su taquilla con una entrada de cine en la mano, ¡pero el nombre de la película que aparece en la entrada resulta ser incorrecto! Debería haber ido al pabellón 2, pero el billete decía pabellón 1. Si usted es un conductor con un alto grado de acoplamiento, es posible que le preocupe no comprender la situación.

Sin embargo, ¡eres un conductor de bajo acoplamiento! No sólo escuchó atentamente la explicación del cliente, sino que también pudo buscar fácilmente los horarios correctos de las películas desde su computadora. Así que imprime rápidamente un nuevo billete y se disculpa con el cliente con una sonrisa. Sin problemas, resolvió el problema e hizo que el cliente se sintiera bienvenido.

¡Esta es la belleza del bajo acoplamiento! Las dependencias entre módulos son débiles y los cambios en un módulo no tendrán mucho impacto en otros módulos. Al igual que usted como director, sólo necesita centrarse en sus propias tareas cuando se enfrenta a los problemas, sin considerar otros factores.

Una maravillosa combinación de alta cohesión y bajo acoplamiento.

La alta cohesión y el bajo acoplamiento son como socios mágicos que trabajan juntos tácitamente. El mundo del diseño de software nunca vuelve a ser el mismo cuando compartes la escena.

Imagina que eres parte de una banda y cada uno sostiene un instrumento. Durante la actuación, trabajaron estrechamente juntos, cada uno utilizando sus propias fortalezas para crear música maravillosa en el escenario. La alta cohesión les permite entenderse entre sí y cada músico puede completar con precisión su parte sin molestar a otros instrumentos. Y el bajo acoplamiento te permite ser relativamente independiente en tu desempeño, y los errores de un jugador no se transmitirán fácilmente a otros jugadores.

Una banda como esta definitivamente puede dejar una profunda impresión en la audiencia, ¿verdad? ¡Por supuesto, el diseño del software es el mismo! A través de los principios de diseño de alta cohesión y bajo acoplamiento, podemos hacer que el software sea más robusto, fácil de mantener y expandir.

ventaja:

  1. Mantenibilidad: el código con alta cohesión y bajo acoplamiento es más fácil de entender y modificar. Cuando un módulo cambia, solo necesita prestar atención a su propio código sin tener demasiado impacto en otros módulos.

  2. Escalabilidad: dado que las dependencias entre módulos son débiles, es más fácil agregar nuevos módulos funcionales o modificar módulos existentes sin tener un efecto en cadena en otros módulos.

  3. Reutilizabilidad: el código poco acoplado es más fácil de probar y depurar de forma independiente, y también es más fácil de reutilizar para escenarios similares en otros proyectos.

  4. Capacidad de prueba: el código altamente cohesivo hace que las pruebas unitarias sean más fáciles y confiables. Debido a que las funciones de los módulos están estrechamente relacionadas entre sí, es más fácil escribir casos de prueba para módulos individuales.

Como alcanzar

  1. Principio de responsabilidad única (SRP): cada módulo o clase debe centrarse en realizar una única tarea. Un módulo debe tener un propósito claro y ser únicamente responsable de completar funciones relacionadas con ese propósito.

  2. Principio de segregación de interfaces (ISP): un cliente no debe depender de interfaces que no necesita. Descomponga la interfaz en interfaces más pequeñas y específicas para satisfacer diferentes necesidades y reducir la complejidad de la interfaz.

  3. Principio de inversión de dependencia (DIP): los módulos de alto nivel no deben depender de módulos de bajo nivel, sino que deben depender de abstracciones. Defina dependencias entre módulos mediante el uso de interfaces o clases abstractas para reducir el impacto de implementaciones específicas en módulos de alto nivel.

  4. Principio de reutilización de combinación/agregación (CARP): priorice el uso de relaciones de combinación o agregación en lugar de relaciones de herencia. Habilite la reutilización de código y evite un acoplamiento estrecho entre clases tratando los objetos como propiedades o variables miembro de otros objetos.

  5. Ley de Demeter (LoD): una clase debe interactuar con otras clases lo menos posible. Reduzca la dependencia de otras clases y reduzca el acoplamiento entre módulos.

  6. Inyección de dependencia (DI): reduzca las dependencias directas entre clases sacando las dependencias de la propia clase. Inyecte objetos de dependencia en clases a través de constructores, parámetros de métodos o contenedores de inyección de dependencias.

  7. Patrones de diseño: utilice patrones de diseño, como el patrón de fábrica, el patrón de observador, etc., para reducir el acoplamiento de código y proporcionar soluciones flexibles.

Resumir

Seguir los principios de diseño de alta cohesión y bajo acoplamiento puede mejorar la mantenibilidad, escalabilidad y capacidad de prueba de los sistemas de software. A través de métodos como el principio de responsabilidad única, el principio de aislamiento de interfaz y el principio de inversión de dependencia, podemos lograr un diseño de alta cohesión y bajo acoplamiento. Al mismo tiempo, la inyección de dependencia y los patrones de diseño apropiados también son herramientas útiles para lograr una alta cohesión y un bajo acoplamiento. Al aplicar racionalmente estos principios y métodos, podemos mejorar la eficiencia del proceso de desarrollo de software, reducir la complejidad del código y hacer que el software sea más fácil de comprender, mantener y expandir.

Supongo que te gusta

Origin blog.csdn.net/qq_53114797/article/details/132800307
Recomendado
Clasificación