Esquema de patrones de diseño: Introducción a 23 patrones de diseño

I. Introducción

El campo actual del desarrollo de software está evolucionando rápidamente y los sistemas de software se están volviendo cada vez más complejos. En este proceso, frente a los requisitos y escenarios comerciales en constante cambio, cómo completar el desarrollo de software de manera rápida y eficiente se ha convertido en un tema importante. Como solución ampliamente utilizada, los patrones de diseño representan las mejores prácticas. Estas soluciones son el resultado del ensayo y error de numerosos desarrolladores de software durante un período de tiempo considerable y, por lo general, son adoptadas por desarrolladores de software orientados a objetos experimentados.

Un patrón de diseño es un conjunto de experiencias de diseño de código que se usan repetidamente, son conocidas por la mayoría de las personas y se resumen. Los patrones de diseño se utilizan para reutilizar el código, hacer que el código sea más fácil de entender para otros y garantizar la confiabilidad del código. No hay duda de que los patrones de diseño son beneficiosos para uno mismo, para los demás y para el sistema. Los patrones de diseño hacen que la compilación de código sea verdaderamente ingeniería. Los patrones de diseño son la piedra angular de la ingeniería de software, al igual que los ladrillos y las piedras de un edificio.

El uso razonable de patrones de diseño en el proyecto puede resolver perfectamente muchos problemas. Cada patrón tiene un principio correspondiente que se corresponde con él en realidad. Cada patrón describe un problema que ocurre repetidamente a nuestro alrededor, y el problema. La solución central, por lo que el diseño Los patrones pueden ser ampliamente utilizados.

2. ¿Qué es un patrón de diseño?

Definir patrones de diseño

El patrón de diseño es un método empírico para resolver problemas específicos después de años de práctica y resumen en el desarrollo de software. Es una solución reutilizable que puede ayudar a los desarrolladores a evitar problemas comunes que se encuentran al diseñar software y mejorar la calidad y la capacidad de mantenimiento del software.

GOF banda de los cuatro

En 1994, Erich Gamma, Richard Helm, Ralph Johnson y John Vlissides fueron coautores de un libro titulado Design Patterns - Elements of Reusable Object-Oriented Software (traducción al chino: Design Patterns - Reusable Object-Oriented Software Elements) , que introdujo el concepto de patrones de diseño en el desarrollo de software por primera vez.

Los cuatro autores se denominan colectivamente GOF (Gang of Four) . Los patrones de diseño que propusieron se basan principalmente en los siguientes principios de diseño orientado a objetos.

  • Programa a la interfaz en lugar de la implementación.
  • Prefiere la composición de objetos a la herencia.

Objetivos de los patrones de diseño

Los objetivos de los patrones de diseño incluyen principalmente los siguientes puntos:

  • Reducir el acoplamiento: mediante el uso de patrones de diseño, se pueden desacoplar varios módulos del sistema para mejorar la capacidad de mantenimiento y la escalabilidad del sistema.
  • Mejorar la reutilización: los patrones de diseño brindan algunas soluciones generales que pueden ayudarnos a evitar reinventar la rueda y mejorar la reutilización del código.
  • Mejora la legibilidad del código: los patrones de diseño proporcionan un lenguaje y una estructura comunes que hacen que el código sea más fácil de entender y leer.
  • Capacidad de mantenimiento del código: debido a que cada módulo está desacoplado, el código es más fácil de mantener.
  • Reducción de errores: el uso de patrones de diseño puede reducir la tasa de errores de su código, ya que estos patrones son mejores prácticas comprobadas que ayudan a evitar algunos errores comunes.
  • Eficiencia: Los patrones de diseño han sido ampliamente reconocidos, por lo que se han optimizado y optimizado para mejorar la eficiencia y el rendimiento del código.

3. Seis principios de patrones de diseño

Los patrones de diseño están guiados por principios estrictos que ayudan a los desarrolladores a construir sistemas de software de alta calidad, fáciles de mantener y reutilizables. Aquí hay seis principios de diseño.

1. Principio de responsabilidad única (PRS)

El principio de responsabilidad única significa que una clase solo es responsable de las responsabilidades correspondientes en un área funcional, o simplemente se puede decir que una clase solo hace una cosa. Si la función responsable de una clase es demasiado compleja, debe dividirse en varias clases, y cada clase solo es responsable de la responsabilidad correspondiente en un área funcional, para realizar la reutilización y el mantenimiento del código.

2. Principio abierto y cerrado (OCP)

El principio abierto-cerrado significa que una entidad de software debe estar abierta a la extensión y cerrada a la modificación. Es decir, al diseñar un sistema, se debe intentar evitar modificar el código original, pero implementar nuevas funciones a través de la extensión.

3. Principio de sustitución de Liskov (LSP)

El principio de sustitución de Liskov es uno de los principios básicos del diseño orientado a objetos. El principio de sustitución de Liskov significa que dondequiera que pueda aparecer una clase base, debe aparecer una subclase. Es decir, la subclase puede reemplazar a la clase principal en cualquier parte del programa y se garantiza que el comportamiento lógico del programa permanecerá sin cambios. LSP es la piedra angular de la reutilización de la herencia. Solo cuando la clase derivada puede reemplazar a la clase base y la función de la unidad de software no se ve afectada, la clase base puede reutilizarse verdaderamente y la clase derivada también puede agregar otras nuevas sobre la base. de la clase base Comportamiento.

4. Principio de Inversión de Dependencia (DIP)

Este principio es la base del principio de apertura y cierre.El principio de inversión de dependencia significa que los módulos de alto nivel no deben depender de los módulos de bajo nivel, y ambos deben depender de abstracciones. Las interfaces abstractas no deberían depender de implementaciones concretas, y las implementaciones concretas deberían depender de interfaces abstractas. En pocas palabras, es programación para la interfaz.El programa llama directamente a la interfaz en lugar de llamar a la clase de implementación, lo que reduce el acoplamiento entre el cliente y el módulo de implementación.

5. Principio de segregación de interfaz (ISP)

El principio de aislamiento de interfaz se refiere a la separación y aislamiento de métodos de diferentes tipos en la interfaz, de modo que el cliente no necesite implementar los métodos que no necesita. En otras palabras, la dependencia de una clase de otra clase debe establecerse en la interfaz más pequeña, y la interfaz debe dividirse en interfaces más pequeñas y específicas tanto como sea posible, de modo que la interfaz solo contenga los métodos requeridos por el cliente.

6. Ley de Deméter (LoD)

Un objeto debe interactuar con otros objetos lo menos posible y reducir el acoplamiento entre clases tanto como sea posible. También conocido como el principio del mínimo conocimiento, el mínimo conocimiento significa que un objeto sabe lo menos posible sobre otros objetos.

En cuarto lugar, la clasificación de los patrones de diseño.

Los patrones de diseño se pueden dividir en tres tipos: patrones de creación, patrones estructurales y patrones de comportamiento.

Patrones creacionales

Este tipo de patrón proporciona un mecanismo para crear objetos, lo que puede mejorar la flexibilidad y la reutilización del código existente.

número de serie tipo describir
1 Patrón de método de fábrica Defina una interfaz para crear objetos y deje que sus subclases decidan qué clase de fábrica instanciar.El modo de fábrica retrasa el proceso de creación de las subclases.
2 Patrón de fábrica abstracto Proporciona una interfaz para crear una serie de objetos relacionados o interdependientes sin especificar sus clases concretas.
3 Patrón único Garantiza que solo haya una instancia de una clase y proporciona un punto de acceso global a ella.
4 Patrón de constructor Separar una construcción compleja de su representación permite que el mismo proceso de construcción cree representaciones diferentes.
5 Patrón de prototipo Utilice instancias de prototipo para especificar el tipo de objeto que se creará y cree nuevos objetos copiando estos prototipos.

patrón estructural

Estos patrones describen cómo ensamblar objetos y clases en estructuras más grandes manteniendo la estructura flexible y eficiente.

número de serie tipo describir
1 Patrón de adaptador Convierte la interfaz de una clase a otra interfaz que el cliente quiera. El patrón Adapter permite que las clases que de otro modo no funcionarían juntas debido a interfaces incompatibles trabajen juntas.
2 Patrón de puente Separe la abstracción de la implementación para que ambas puedan variar de forma independiente.
3 Patrón compuesto¶ Agrupa objetos en estructuras de árbol para representar jerarquías de "parte-todo". El modo compuesto permite a los usuarios utilizar un único objeto y un objeto compuesto de forma coherente.
4 Patrón decorador Agregue dinámicamente algunas responsabilidades adicionales a un objeto. En términos de agregar funcionalidad, el patrón decorador es más flexible que generar subclases.
5 Patrón de fachada Proporciona una interfaz coherente para un conjunto de interfaces en un subsistema. El modo Fachada define una interfaz de alto nivel que facilita el uso del subsistema.
6 Patrón de peso mosca Utilice la tecnología de uso compartido para admitir de manera eficiente una gran cantidad de objetos de granularidad fina.
7 Patrón de representación Proporciona un proxy para que otros objetos controlen el acceso a este objeto.

modelo de comportamiento

Estos patrones son responsables de la comunicación eficiente y la delegación de responsabilidades entre objetos.

número de serie tipo describir
1 Patrón de cadena de responsabilidad Evite acoplar el remitente y el receptor de la solicitud, haga posible que varios objetos reciban la solicitud, conecte estos objetos en una cadena y pase la solicitud a lo largo de esta cadena hasta que un objeto la procese.
2 Patrón de comando Encapsula una solicitud en un objeto, lo que le permite parametrizar clientes con diferentes solicitudes.
3 Patrón de iterador Proporciona una forma de acceder secuencialmente a los elementos de un objeto agregado sin exponer la representación interna del objeto.
4 Patrón mediador Un objeto intermediario se utiliza para encapsular una serie de interacciones de objetos. El intermediario hace que los objetos no necesiten referirse explícitamente entre sí, por lo que el acoplamiento es suelto y la interacción entre ellos se puede cambiar de forma independiente.
5 Patrón de recuerdo Capture el estado interno de un objeto y guarde ese estado fuera del objeto sin romper la encapsulación.
6 Patrón de observador Defina una relación de dependencia de uno a muchos entre objetos. Cuando el estado de un objeto cambia, todos los objetos que dependen de él serán notificados y actualizados automáticamente.
7 Patrón de estado Permite que un objeto cambie su comportamiento cuando cambia su estado interno y el objeto parece modificar su clase.
8 Patrón de estrategia Defina una serie de algoritmos, encapsúlelos uno por uno y hágalos intercambiables.
9 Plantilla Método Patrón Defina el esqueleto de un algoritmo en una operación, delegando algunos pasos a las subclases. El método de plantilla permite que las subclases definan algunos pasos específicos de un algoritmo sin cambiar la estructura del algoritmo.
10 Patrón de visitante Principalmente separa la estructura de datos de la operación de datos, de modo que se pueden agregar nuevas operaciones sin cambiar la estructura del objeto.
11 Patrón de intérprete Define la gramática de un idioma y construye un intérprete para interpretar oraciones en el idioma. El ámbito de aplicación es estrecho.

conclusión V

La creación no es fácil. Si este artículo es útil para usted, por favor, marque como favorito y preste atención. Su apoyo y aliento son la mayor motivación para mi creación.

Supongo que te gusta

Origin blog.csdn.net/qq_36756227/article/details/130450166
Recomendado
Clasificación