El Principio Abierto/Cerrado es el principio de diseño más básico en el mundo del desarrollo de software. Nos guía sobre cómo construir un sistema estable y flexible.
Definición:
Una entidad de software, como clase, módulo y función, debe estar abierta para la extensión y cerrada para la modificación.
El significado del principio de apertura y cierre es que una entidad de software debe expandirse para lograr el cambio, en lugar de modificar el código existente para lograr el cambio.
El principio de apertura y cierre es un principio que restringe el desarrollo y diseño actual para las cosas futuras de la entidad de software.
Nota: El principio de apertura y cierre está abierto para extensión y cerrado para modificación. No significa que no se hará ninguna modificación. Los cambios en los módulos de bajo nivel deben combinarse con módulos de alto nivel, de lo contrario, será un fragmento de código aislado y sin sentido.
La importancia del principio de apertura y cierre:
- El impacto de los principios de apertura y cierre en las pruebas
El principio de abrir y cerrar es mantener el código de prueba original aún capaz de ejecutarse normalmente, solo necesitamos probar el código extendido.
- El principio de apertura y cierre puede mejorar la reutilización.
En el diseño orientado a objetos , toda la lógica se combina a partir de la lógica atómica, en lugar de implementar una lógica empresarial en una clase de forma independiente. Solo de esta manera se puede reutilizar el código. Cuanto menor sea la granularidad, mayor será la posibilidad de ser reutilizado.
- El principio abierto y cerrado puede mejorar la mantenibilidad
- Requisitos de desarrollo orientado a objetos
Cómo utilizar el principio de apertura y cierre:
Primero , restrinja la extensión a través de la interfaz o clase abstracta, limite la extensión del límite y no permita métodos públicos que no existen en la interfaz o clase abstracta;
En segundo lugar , intente utilizar interfaces o clases abstractas para tipos de parámetros y objetos de referencia en lugar de clases de implementación;
Tercero , la capa de abstracción debe mantenerse lo más estable posible, una vez que se confirma, no se permite ninguna modificación.
La encapsulación de cambios tiene dos significados:
Primero, encapsule los mismos cambios en una interfaz o clase abstracta;
En segundo lugar, encapsule diferentes cambios en diferentes interfaces o clases abstractas. Dos cambios diferentes no deben aparecer en la misma interfaz o clase abstracta.
Ejemplos
Un ejemplo, abrir y cerrar puertas a mano.

Si hay una nueva demanda, es necesario aumentar la función de abrir y cerrar el cajón a mano. Para el código, debe agregar una clase Cajón y modificar la clase Mano al mismo tiempo.

Siguiendo el ejemplo del principio de apertura y cierre de OCP, abrir y cerrar la puerta a mano depende de una interfaz, y la clase de implementación específica implementa esta interfaz.

Cuando es necesario aumentar la cantidad de manos para abrir y cerrar el refrigerador, la clase de refrigerador implementa esta interfaz sin modificar la interfaz y la clase Hand original.
