Principios SOLID desmitificados — (I)

Apr 17 2023
Principio de segregación de interfaz
Las interfaces no deben obligar a las clases a implementar una funcionalidad que no admiten, lo que significa que las interfaces más grandes deben dividirse en otras más pequeñas para ofrecer soporte. Ejemplo de escenario Usemos el mismo escenario con la clase AreaCalculator y agréguele una nueva funcionalidad.

Las interfaces no deben obligar a las clases a implementar una funcionalidad que no admiten, lo que significa que las interfaces más grandes deben dividirse en otras más pequeñas para ofrecer soporte.

Ejemplo de escenario

Usemos el mismo escenario con la clase AreaCalculator y agréguele una nueva funcionalidad. Esta vez, al usuario le gustaría la suma del volumen de formas como Cubo, Cuboide, etc.

Mal escrito

Cualquier forma que cree debe implementar el método de volumen , pero sabe que los cuadrados son formas planas y que no tienen volúmenes, por lo que esta interfaz obligaría a la clase Square a implementar un método que no tiene uso.

Esto viola el Principio de Segregación de Interfaz.

Bien escrito

Para remediar esta violación, debemos crear una nueva interfaz llamada IShape3D para manejar formas que tienen un volumen y mantener la interfaz IShape tal como es para manejar formas 2D.

Beneficios principales

  1. Alta cohesión — mejor comprensibilidad, solidez.
  2. Bajo acoplamiento: mejor mantenibilidad, alta resistencia a los cambios.
  3. Las clases no están obligadas a implementar interfaces que no utilizan.