El principio cerrado abierto es el principio de diseño más básico en el mundo de Java. Nos guía cómo construir un sistema estable y flexible.
definición:
Una entidad de software, como clases, módulos y funciones, debe estar abierta a extensiones y cerrarse a modificaciones.
Las entidades de software, como clases, módulos y funciones, deben estar abiertas para la extensión pero cerradas para modificaciones.
El significado del principio de apertura y cierre es que una entidad de software debe lograr cambios a través de extensiones, en lugar de modificar el código existente.
La entidad del software incluye las siguientes partes:
El principio de apertura y cierre es un principio para las limitaciones en el diseño actual de desarrollo formulado para futuras cosas de la entidad del software.
Nota: El principio de apertura y cierre está abierto a extensiones y modificaciones de cierre no significa que no se realicen modificaciones. Los cambios en los módulos de bajo nivel deben estar junto con módulos de alto nivel, de lo contrario será un fragmento de código aislado y sin sentido.
Tipos de cambio:
La ruta básica de un proyecto debe ser la siguiente: desarrollo del proyecto, reconstrucción, pruebas, producción, operación y mantenimiento. La reconstrucción puede modificar el diseño y el código originales, y la operación y el mantenimiento pueden minimizar la modificación del código original, mantener la pureza del código histórico y mejorar la estabilidad del sistema.
Importancia del principio de apertura y cierre:
1. El impacto del principio de apertura y cierre en las pruebas. El principio de apertura y cierre es mantener el código de prueba original que todavía se está ejecutando normalmente. Solo necesitamos probar el código extendido.
2. El principio de apertura y cierre puede mejorar la reutilización. En el diseño orientado a objetos, toda la lógica está compuesta de lógica atómica, en lugar de implementar una lógica comercial independientemente en una clase. Solo de esta manera se puede reutilizar el código. Cuanto menor sea la granularidad, mayor será la posibilidad de ser reutilizado.
3. El principio de apertura y cierre puede mejorar los requisitos de desarrollo orientado a objetos de mantenimiento.
Cómo usar el principio de apertura y cierre:
1. Primero de restricciones abstractas, extienda la extensión a través de las restricciones de la clase o de la interfaz abstracta, y no permiten métodos públicos que no existan en la interfaz o clase abstracta;
En segundo lugar, intente usar interfaces o clases abstractas para tipos de parámetros y objetos de referencia, en lugar de clases de implementación;
Tercero, trate de permanecer estable tanto como sea posible, y una vez determinado, no se permiten modificaciones.
2. Módulo de control de metadatos Comportamiento Los metadatos son los datos utilizados para describir el entorno y los datos. En términos de Layman, son los parámetros de configuración. Los parámetros se pueden obtener de archivos o de bases de datos.
Los contenedores de resorte son un ejemplo típico del comportamiento de los módulos de control de metadatos, y lo último es la inversión de control
3. Formulación de una carta del proyecto. En un equipo, es muy importante establecer una carta del proyecto porque la carta especifica acuerdos que todo el personal debe cumplir. Para los proyectos, los acuerdos son mejores que la configuración.
4. Los cambios de empaque tienen dos significados:
Primero, encapsula los mismos cambios en una interfaz o clase abstracta;
En segundo lugar, encapsula diferentes cambios en diferentes interfaces o clases abstractas, y no debe haber dos cambios diferentes en la misma interfaz o clase abstracta.
ejemplo
Aquí hay un ejemplo, en primer lugar, un mal ejemplo:
clase GraphicEditor {public void DrawShape (Shape s) {if (s.m_type == 1) dibujante (s); else if (s.m_type == 2) Drawcircle (s); } public void drawcircle (círculo r) {....} public void drawRectangle (rectangle r) {....}} rectifica forma {int m_type; } class rectangle extiende la forma {rectangle () {super.m_type = 1; }} círculo de clase extiende la forma {círculo () {super.m_type = 2; }}Cuando queremos expandir una forma, primero debemos entender la clase GraphicEditor, luego agregar un nuevo tipo en DrawShape y luego agregar una función. Aquí está el código mejorado:
class GraphicEditor {public void drawShape (Shape s) {s.draw (); }} forma de clase {abstract void dibujo (); } class Rectangle extiende la forma {public void draw () {// Dibuja el rectángulo}}
No es necesario comprender la lógica de dibujo, coloque la implementación específica en una subclase.
Resumir:
1. Cumplir con los principios de apertura y cierre puede mejorar la escalabilidad y el mantenimiento del software.
2. La mayoría de los patrones de diseño y los principios de diseño se tratan de realizar el principio de apertura y cierre.