En este post vamos a ver un ejemplo de diseño que no cumple con el principio Open-Closed y una versión del mismo ejemplo que sí cumple con el principio.
Principio Open-Closed (OCP)
Los principios SOLID son cinco principios básicos del diseño y la programación orientada a objetos, uno de los cuales es el principio Open-Closed
Una descripción más detallada de este principio la pueden encontrar en un artículo de Robert C. Martin “Uncle Bob”, coautor del Manifiesto Ágil, titulado The Open-Closed Principle.
Bertrand Meyer acuñó este principio en 1988 de la siguiente manera:
Software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification.
Y en su artículo, Uncle Bob nos explica que:
Los módulos que cumplen con el principio open-closed tienen dos atributos principales:
- Están “abiertos para extensiones” (Open).
- Esto significa que el comportamiento de un módulo puede ser extendido. Que podemos hacer que un módulo se comporte de nuevas y diferentes maneras a medida en que los requerimientos de la aplicación cambien, o para satisfacer nuevas aplicaciones.
- Están “cerrados para modificaciones” (Closed).
- El código fuente de dicho módulo es inviolable. Nadie está autorizado a cambiar dicho código.